{"id":67467,"date":"2024-06-25T16:28:59","date_gmt":"2024-06-25T12:58:59","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/%d8%aa%d8%b2%d8%b1%db%8c%d9%82-%d9%88%d8%a7%d8%a8%d8%b3%d8%aa%da%af%db%8c-%d9%be%db%8c%d8%b4%d8%b1%d9%81%d8%aa%d9%87-%d8%af%d8%b1-%d8%a7%da%a9%d8%b3%db%8c%d8%b1-%d8%a8%d8%a7-rewire\/"},"modified":"2024-06-25T16:28:59","modified_gmt":"2024-06-25T12:58:59","slug":"%d8%aa%d8%b2%d8%b1%db%8c%d9%82-%d9%88%d8%a7%d8%a8%d8%b3%d8%aa%da%af%db%8c-%d9%be%db%8c%d8%b4%d8%b1%d9%81%d8%aa%d9%87-%d8%af%d8%b1-%d8%a7%da%a9%d8%b3%db%8c%d8%b1-%d8%a8%d8%a7-rewire","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/%d8%aa%d8%b2%d8%b1%db%8c%d9%82-%d9%88%d8%a7%d8%a8%d8%b3%d8%aa%da%af%db%8c-%d9%be%db%8c%d8%b4%d8%b1%d9%81%d8%aa%d9%87-%d8%af%d8%b1-%d8%a7%da%a9%d8%b3%db%8c%d8%b1-%d8%a8%d8%a7-rewire\/","title":{"rendered":"\u062a\u0632\u0631\u06cc\u0642 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u067e\u06cc\u0634\u0631\u0641\u062a\u0647 \u062f\u0631 \u0627\u06a9\u0633\u06cc\u0631 \u0628\u0627 Rewire"},"content":{"rendered":"<p><\/p>\n<div data-article-id=\"1885559\" id=\"article-body\">\n<p>\u062f\u0631 \u0622\u062e\u0631\u06cc\u0646 \u067e\u0633\u062a \u062e\u0648\u062f\u060c \u0628\u0631\u0631\u0633\u06cc \u06a9\u0631\u062f\u06cc\u0645 \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 Dependency Injection (DI) \u06cc\u06a9 \u0627\u0644\u06af\u0648\u06cc \u0637\u0631\u0627\u062d\u06cc \u0642\u062f\u0631\u062a\u0645\u0646\u062f \u0627\u0633\u062a \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u062a\u0633\u062a \u0647\u0627\u06cc ExUnit \u0645\u0627 \u0631\u0627 \u0628\u0647\u0628\u0648\u062f \u0628\u062e\u0634\u062f.<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647\u060c \u0628\u0627 \u062a\u0645\u0631\u06a9\u0632 \u0628\u0631 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 Rewire \u0628\u0631\u0627\u06cc \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc Elixir\u060c \u0639\u0645\u06cc\u0642\u200c\u062a\u0631 \u0628\u0647 \u0645\u0648\u0636\u0648\u0639 DI \u062f\u0631 \u0627\u06a9\u0633\u06cc\u0631 \u062e\u0648\u0627\u0647\u06cc\u0645 \u067e\u0631\u062f\u0627\u062e\u062a.<\/p>\n<p>\u0645\u0627 \u0645\u0641\u0627\u0647\u06cc\u0645 \u0627\u0635\u0644\u06cc Rewire\u060c \u0646\u062d\u0648\u0647 \u0634\u0631\u0648\u0639 \u06a9\u0627\u0631 \u0628\u0627 \u0622\u0646 \u0648 \u0645\u062b\u0627\u0644 \u0647\u0627\u06cc \u0639\u0645\u0644\u06cc \u0631\u0627 \u067e\u0648\u0634\u0634 \u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u0627\u062f.  \u0647\u0645\u0686\u0646\u06cc\u0646 \u0646\u062d\u0648\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Rewire \u0631\u0627 \u062f\u0631 \u06a9\u0646\u0627\u0631 Mox \u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u06cc\u062f.<\/p>\n<p>\u0628\u06cc\u0627 \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u0645!<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"\u062a\u063a\u06cc\u06cc\u0631 \u0648\u0636\u0639\u06cc\u062a \u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/%d8%aa%d8%b2%d8%b1%db%8c%d9%82-%d9%88%d8%a7%d8%a8%d8%b3%d8%aa%da%af%db%8c-%d9%be%db%8c%d8%b4%d8%b1%d9%81%d8%aa%d9%87-%d8%af%d8%b1-%d8%a7%da%a9%d8%b3%db%8c%d8%b1-%d8%a8%d8%a7-rewire\/#%D9%85%D9%82%D8%AF%D9%85%D9%87_%D8%A7%DB%8C_%D8%A8%D8%B1_Rewire\" >\u0645\u0642\u062f\u0645\u0647 \u0627\u06cc \u0628\u0631 Rewire<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/%d8%aa%d8%b2%d8%b1%db%8c%d9%82-%d9%88%d8%a7%d8%a8%d8%b3%d8%aa%da%af%db%8c-%d9%be%db%8c%d8%b4%d8%b1%d9%81%d8%aa%d9%87-%d8%af%d8%b1-%d8%a7%da%a9%d8%b3%db%8c%d8%b1-%d8%a8%d8%a7-rewire\/#%DA%86%D8%B1%D8%A7_%D8%A7%D8%B2_Rewire_%D9%88_Mox_%D8%A8%D8%B1%D8%A7%DB%8C_Elixir_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%DA%A9%D9%86%DB%8C%D9%85%D8%9F\" >\u0686\u0631\u0627 \u0627\u0632 Rewire \u0648 Mox \u0628\u0631\u0627\u06cc Elixir \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645\u061f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/%d8%aa%d8%b2%d8%b1%db%8c%d9%82-%d9%88%d8%a7%d8%a8%d8%b3%d8%aa%da%af%db%8c-%d9%be%db%8c%d8%b4%d8%b1%d9%81%d8%aa%d9%87-%d8%af%d8%b1-%d8%a7%da%a9%d8%b3%db%8c%d8%b1-%d8%a8%d8%a7-rewire\/#%D8%B4%D8%B1%D9%88%D8%B9_%DA%A9%D8%A7%D8%B1_%D8%A8%D8%A7_Rewire_%D9%88_Mox_%D8%AF%D8%B1_%D9%BE%D8%B1%D9%88%DA%98%D9%87_%D8%A7%DA%A9%D8%B3%DB%8C%D8%B1_%D8%B4%D9%85%D8%A7\" >\u0634\u0631\u0648\u0639 \u06a9\u0627\u0631 \u0628\u0627 Rewire \u0648 Mox \u062f\u0631 \u067e\u0631\u0648\u0698\u0647 \u0627\u06a9\u0633\u06cc\u0631 \u0634\u0645\u0627<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/%d8%aa%d8%b2%d8%b1%db%8c%d9%82-%d9%88%d8%a7%d8%a8%d8%b3%d8%aa%da%af%db%8c-%d9%be%db%8c%d8%b4%d8%b1%d9%81%d8%aa%d9%87-%d8%af%d8%b1-%d8%a7%da%a9%d8%b3%db%8c%d8%b1-%d8%a8%d8%a7-rewire\/#%D9%85%D8%B1%D8%AD%D9%84%D9%87_1_%DB%8C%DA%A9_%D9%BE%D8%B1%D9%88%DA%98%D9%87_%D8%A7%DA%A9%D8%B3%DB%8C%D8%B1_%D8%AC%D8%AF%DB%8C%D8%AF_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%DA%A9%D9%86%DB%8C%D8%AF\" >\u0645\u0631\u062d\u0644\u0647 1: \u06cc\u06a9 \u067e\u0631\u0648\u0698\u0647 \u0627\u06a9\u0633\u06cc\u0631 \u062c\u062f\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/nabfollower.com\/blog\/%d8%aa%d8%b2%d8%b1%db%8c%d9%82-%d9%88%d8%a7%d8%a8%d8%b3%d8%aa%da%af%db%8c-%d9%be%db%8c%d8%b4%d8%b1%d9%81%d8%aa%d9%87-%d8%af%d8%b1-%d8%a7%da%a9%d8%b3%db%8c%d8%b1-%d8%a8%d8%a7-rewire\/#%D9%85%D8%B1%D8%AD%D9%84%D9%87_2_%D8%A7%D9%81%D8%B2%D9%88%D8%AF%D9%86_%D9%88%D8%A7%D8%A8%D8%B3%D8%AA%DA%AF%DB%8C_%D9%87%D8%A7\" >\u0645\u0631\u062d\u0644\u0647 2: \u0627\u0641\u0632\u0648\u062f\u0646 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/nabfollower.com\/blog\/%d8%aa%d8%b2%d8%b1%db%8c%d9%82-%d9%88%d8%a7%d8%a8%d8%b3%d8%aa%da%af%db%8c-%d9%be%db%8c%d8%b4%d8%b1%d9%81%d8%aa%d9%87-%d8%af%d8%b1-%d8%a7%da%a9%d8%b3%db%8c%d8%b1-%d8%a8%d8%a7-rewire\/#%D9%85%D8%B1%D8%AD%D9%84%D9%87_3_%D9%BE%DB%8C%DA%A9%D8%B1%D8%A8%D9%86%D8%AF%DB%8C_Mox\" >\u0645\u0631\u062d\u0644\u0647 3: \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc Mox<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/nabfollower.com\/blog\/%d8%aa%d8%b2%d8%b1%db%8c%d9%82-%d9%88%d8%a7%d8%a8%d8%b3%d8%aa%da%af%db%8c-%d9%be%db%8c%d8%b4%d8%b1%d9%81%d8%aa%d9%87-%d8%af%d8%b1-%d8%a7%da%a9%d8%b3%db%8c%d8%b1-%d8%a8%d8%a7-rewire\/#%D9%85%D9%81%D8%A7%D9%87%DB%8C%D9%85_%D8%A7%D8%B5%D9%84%DB%8C_Rewire\" >\u0645\u0641\u0627\u0647\u06cc\u0645 \u0627\u0635\u0644\u06cc Rewire<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/nabfollower.com\/blog\/%d8%aa%d8%b2%d8%b1%db%8c%d9%82-%d9%88%d8%a7%d8%a8%d8%b3%d8%aa%da%af%db%8c-%d9%be%db%8c%d8%b4%d8%b1%d9%81%d8%aa%d9%87-%d8%af%d8%b1-%d8%a7%da%a9%d8%b3%db%8c%d8%b1-%d8%a8%d8%a7-rewire\/#%D8%AA%D8%B2%D8%B1%DB%8C%D9%82_%D9%88%D8%A7%D8%A8%D8%B3%D8%AA%DA%AF%DB%8C_%D8%A8%D8%A7_Rewire_%D8%AF%D8%B1_EmailScanner_%D9%85%D8%AF%D9%88%D9%84\" >\u062a\u0632\u0631\u06cc\u0642 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0628\u0627 Rewire \u062f\u0631 EmailScanner \u0645\u062f\u0648\u0644<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/nabfollower.com\/blog\/%d8%aa%d8%b2%d8%b1%db%8c%d9%82-%d9%88%d8%a7%d8%a8%d8%b3%d8%aa%da%af%db%8c-%d9%be%db%8c%d8%b4%d8%b1%d9%81%d8%aa%d9%87-%d8%af%d8%b1-%d8%a7%da%a9%d8%b3%db%8c%d8%b1-%d8%a8%d8%a7-rewire\/#%D8%AA%D9%85%D8%B3%D8%AE%D8%B1_%D8%A8%D8%A7_%D9%85%D9%88%DA%A9%D8%B3_%D8%A8%D8%B1%D8%A7%DB%8C_%D8%AA%D8%B3%D8%AA\" >\u062a\u0645\u0633\u062e\u0631 \u0628\u0627 \u0645\u0648\u06a9\u0633 \u0628\u0631\u0627\u06cc \u062a\u0633\u062a<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/nabfollower.com\/blog\/%d8%aa%d8%b2%d8%b1%db%8c%d9%82-%d9%88%d8%a7%d8%a8%d8%b3%d8%aa%da%af%db%8c-%d9%be%db%8c%d8%b4%d8%b1%d9%81%d8%aa%d9%87-%d8%af%d8%b1-%d8%a7%da%a9%d8%b3%db%8c%d8%b1-%d8%a8%d8%a7-rewire\/#%D9%85%D9%88%D8%A7%D8%B1%D8%AF%DB%8C_%DA%A9%D9%87_%D9%87%D9%86%DA%AF%D8%A7%D9%85_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D8%A7%D8%B2_Rewire_%D9%88_Mox_%D8%A8%D8%A7%DB%8C%D8%AF_%D8%AF%D8%B1_%D9%86%D8%B8%D8%B1_%D8%A8%DA%AF%DB%8C%D8%B1%DB%8C%D8%AF\" >\u0645\u0648\u0627\u0631\u062f\u06cc \u06a9\u0647 \u0647\u0646\u06af\u0627\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Rewire \u0648 Mox \u0628\u0627\u06cc\u062f \u062f\u0631 \u0646\u0638\u0631 \u0628\u06af\u06cc\u0631\u06cc\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/nabfollower.com\/blog\/%d8%aa%d8%b2%d8%b1%db%8c%d9%82-%d9%88%d8%a7%d8%a8%d8%b3%d8%aa%da%af%db%8c-%d9%be%db%8c%d8%b4%d8%b1%d9%81%d8%aa%d9%87-%d8%af%d8%b1-%d8%a7%da%a9%d8%b3%db%8c%d8%b1-%d8%a8%d8%a7-rewire\/#%D8%A8%D8%B3%D8%AA%D9%87_%D8%A8%D9%86%D8%AF%DB%8C\" >\u0628\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D9%85%D9%82%D8%AF%D9%85%D9%87_%D8%A7%DB%8C_%D8%A8%D8%B1_Rewire\"><\/span>\n<p>  \u0645\u0642\u062f\u0645\u0647 \u0627\u06cc \u0628\u0631 Rewire<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u06cc\u06a9\u06cc \u0627\u0632 \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u062f\u0631 \u0645\u0642\u0627\u0644\u0647 \u0642\u0628\u0644\u06cc \u0628\u0627 \u0622\u0646 \u0645\u0648\u0627\u062c\u0647 \u0628\u0648\u062f\u06cc\u0645\u060c \u0646\u0628\u0648\u062f \u0631\u0648\u0634\u06cc \u0633\u0627\u062e\u062a\u0627\u0631\u06cc\u0627\u0641\u062a\u0647 \u0628\u0631\u0627\u06cc \u062a\u0639\u0631\u06cc\u0641 \u0648 \u062a\u0632\u0631\u06cc\u0642 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc\u200c\u0647\u0627 \u0628\u0647 \u0645\u0627\u0698\u0648\u0644\u200c\u0647\u0627\u06cc\u0645\u0627\u0646 \u0628\u0648\u062f.  \u0645\u0627 \u0645\u062c\u0628\u0648\u0631 \u0634\u062f\u06cc\u0645 \u0628\u0647 \u0635\u0648\u0631\u062a \u062f\u0633\u062a\u06cc \u0645\u062f\u0644 \u0647\u0627\u06cc \u062e\u0648\u062f \u0631\u0627 \u0628\u0631\u0627\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u0645.<\/p>\n<p>\u0627\u06cc\u0646\u062c\u0627\u0633\u062a \u06a9\u0647 Rewire \u0648 Mox \u0648\u0627\u0631\u062f \u0628\u0627\u0632\u06cc \u0645\u06cc \u0634\u0648\u0646\u062f:<\/p>\n<ul>\n<li>\n<strong>\u0633\u06cc\u0645 \u06a9\u0634\u06cc \u0645\u062c\u062f\u062f<\/strong> \u0631\u0648\u0634\u06cc \u0633\u0627\u062e\u062a\u0627\u0631\u0645\u0646\u062f\u062a\u0631 \u0648 \u0627\u0646\u0639\u0637\u0627\u0641 \u067e\u0630\u06cc\u0631\u062a\u0631 \u0628\u0631\u0627\u06cc \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc DI \u062f\u0631 \u067e\u0631\u0648\u0698\u0647 \u0647\u0627\u06cc \u0627\u06a9\u0633\u06cc\u0631 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u062f.<\/li>\n<li>\n<strong>\u0645\u0648\u06a9\u0633<\/strong> \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0627\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u0628\u0631\u0627\u06cc \u062a\u0633\u062a \u0647\u0627\u06cc \u062e\u0648\u062f \u0645\u0627\u06a9 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u0645.<\/li>\n<\/ul>\n<p>\u062a\u0631\u06a9\u06cc\u0628 \u0627\u06cc\u0646 \u062f\u0648 \u0627\u0628\u0632\u0627\u0631 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u0637\u0648\u0631 \u0642\u0627\u0628\u0644 \u062a\u0648\u062c\u0647\u06cc \u062a\u0633\u062a \u067e\u0630\u06cc\u0631\u06cc \u0648 \u0645\u062f\u0648\u0644\u0627\u0631 \u0628\u0648\u062f\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc Elixir \u0645\u0627 \u0631\u0627 \u0628\u0647\u0628\u0648\u062f \u0628\u062e\u0634\u062f.<\/p>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0627 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06cc\u06a9 \u067e\u0631\u0648\u0698\u0647 \u0646\u0645\u0648\u0646\u0647 \u06a9\u0647 \u0627\u0632 \u0647\u0631 \u062f\u0648 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f\u060c \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u0645.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%DA%86%D8%B1%D8%A7_%D8%A7%D8%B2_Rewire_%D9%88_Mox_%D8%A8%D8%B1%D8%A7%DB%8C_Elixir_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%DA%A9%D9%86%DB%8C%D9%85%D8%9F\"><\/span>\n<p>  \u0686\u0631\u0627 \u0627\u0632 Rewire \u0648 Mox \u0628\u0631\u0627\u06cc Elixir \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645\u061f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0628\u0631\u0627\u06cc \u062c\u0645\u0639\u200c\u0628\u0646\u062f\u06cc \u0642\u0633\u0645\u062a \u0627\u0648\u0644 \u0627\u06cc\u0646 \u0645\u062c\u0645\u0648\u0639\u0647\u060c \u0645\u0632\u0627\u06cc\u0627\u06cc DI \u0628\u0631\u0627\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634\u200c\u067e\u0630\u06cc\u0631\u06cc \u0648 \u0645\u062f\u0648\u0644\u0627\u0631 \u0628\u0648\u062f\u0646 \u0631\u0627 \u0645\u0648\u0631\u062f \u0628\u062d\u062b \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u06cc\u0645.  \u062f\u06cc\u062f\u06cc\u0645 \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0627\u0632 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc\u200c\u0647\u0627\u06cc \u0639\u0628\u0648\u0631 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u062a\u0627\u0628\u0639 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645:<\/p>\n<ul>\n<li>\u0645\u0627 &#8230; \u0631\u0627 \u062f\u0627\u0631\u06cc\u0645 <code>EmailScanner<\/code> \u0645\u0627\u0698\u0648\u0644\u06cc \u06a9\u0647 \u0628\u0631 a <code>SpamFilterService<\/code> \u0628\u0631\u0627\u06cc \u0628\u0631\u0631\u0633\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0622\u06cc\u0627 \u0627\u06cc\u0645\u06cc\u0644 \u0627\u0633\u067e\u0645 \u0627\u0633\u062a \u06cc\u0627 \u062e\u06cc\u0631:\n<\/li>\n<\/ul>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight elixir\"><code><span class=\"k\">defmodule<\/span> <span class=\"no\">EmailScanner<\/span> <span class=\"k\">do<\/span>\n  <span class=\"k\">def<\/span> <span class=\"n\">scan_email<\/span><span class=\"p\">(<\/span><span class=\"n\">spam_filter_service<\/span><span class=\"p\">,<\/span> <span class=\"n\">email<\/span><span class=\"p\">)<\/span> <span class=\"k\">do<\/span>\n    <span class=\"n\">spam_filter_service<\/span><span class=\"o\">.<\/span><span class=\"n\">check_spam<\/span><span class=\"p\">(<\/span><span class=\"n\">email<\/span><span class=\"p\">)<\/span>\n  <span class=\"k\">end<\/span>\n<span class=\"k\">end<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<ul>\n<li>\u0645\u0627 &#8230; \u0631\u0627 \u062f\u0627\u0631\u06cc\u0645 <code>SpamFilterService<\/code> \u0645\u0627\u0698\u0648\u0644\u06cc \u06a9\u0647 \u0645\u0646\u0637\u0642 \u0628\u0631\u0631\u0633\u06cc \u0647\u0631\u0632\u0646\u0627\u0645\u0647 \u0631\u0627 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0645\u06cc \u06a9\u0646\u062f:\n<\/li>\n<\/ul>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight elixir\"><code><span class=\"k\">defmodule<\/span> <span class=\"no\">SpamFilterService<\/span> <span class=\"k\">do<\/span>\n  <span class=\"k\">def<\/span> <span class=\"n\">check_spam<\/span><span class=\"p\">(<\/span><span class=\"n\">email_content<\/span><span class=\"p\">)<\/span> <span class=\"k\">do<\/span>\n    <span class=\"no\">String<\/span><span class=\"o\">.<\/span><span class=\"n\">contains?<\/span><span class=\"p\">(<\/span><span class=\"n\">email_content<\/span><span class=\"p\">,<\/span> <span class=\"s2\">\"spam\"<\/span><span class=\"p\">)<\/span>\n  <span class=\"k\">end<\/span>\n<span class=\"k\">end<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<ul>\n<li>\u0645\u0627 \u0647\u0645\u0686\u0646\u06cc\u0646 \u06cc\u06a9 <code>MockSpamFilterService<\/code> \u0645\u0627\u0698\u0648\u0644\u06cc \u06a9\u0647 \u0627\u062c\u0631\u0627 \u0645\u06cc \u06a9\u0646\u062f <code>SpamFilterService<\/code> \u0631\u0641\u062a\u0627\u0631 \u0628\u0631\u0627\u06cc \u0627\u0647\u062f\u0627\u0641 \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc:\n<\/li>\n<\/ul>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight elixir\"><code><span class=\"k\">defmodule<\/span> <span class=\"no\">MockSpamFilterService<\/span> <span class=\"k\">do<\/span>\n  <span class=\"k\">def<\/span> <span class=\"n\">check_spam<\/span><span class=\"p\">(<\/span><span class=\"n\">_email<\/span><span class=\"p\">),<\/span> <span class=\"k\">do<\/span><span class=\"p\">:<\/span> <span class=\"no\">false<\/span>\n<span class=\"k\">end<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<ul>\n<li>\u062f\u0631 \u0646\u0647\u0627\u06cc\u062a\u060c \u0645\u0627 \u06cc\u06a9 \u062a\u0633\u062a \u062f\u0627\u0631\u06cc\u0645 \u06a9\u0647 \u0627\u0632 \u0622\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f <code>MockSpamFilterService<\/code> \u0628\u0631\u0627\u06cc \u062a\u0633\u062a \u06a9\u0631\u062f\u0646 <code>EmailScanner<\/code> \u0645\u062f\u0648\u0644:\n<\/li>\n<\/ul>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight elixir\"><code><span class=\"k\">defmodule<\/span> <span class=\"no\">EmailScannerTest<\/span> <span class=\"k\">do<\/span>\n  <span class=\"kn\">use<\/span> <span class=\"no\">ExUnit<\/span><span class=\"o\">.<\/span><span class=\"no\">Case<\/span>\n\n  <span class=\"n\">test<\/span> <span class=\"s2\">\"scan_email with non-spam email returns false\"<\/span> <span class=\"k\">do<\/span>\n    <span class=\"n\">non_spam_email<\/span> <span class=\"o\">=<\/span> <span class=\"p\">%<\/span><span class=\"no\">Email<\/span><span class=\"p\">{<\/span><span class=\"ss\">content:<\/span> <span class=\"s2\">\"Hello, world!\"<\/span><span class=\"p\">}<\/span>\n    <span class=\"n\">assert<\/span> <span class=\"no\">false<\/span> <span class=\"o\">==<\/span> <span class=\"no\">EmailScanner<\/span><span class=\"o\">.<\/span><span class=\"n\">scan_email<\/span><span class=\"p\">(<\/span><span class=\"no\">MockSpamFilterService<\/span><span class=\"p\">,<\/span> <span class=\"n\">non_spam_email<\/span><span class=\"p\">)<\/span>\n  <span class=\"k\">end<\/span>\n<span class=\"k\">end<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062f\u0631 Elixir\u060c \u0645\u0627\u0698\u0648\u0644 \u0647\u0627 \u0628\u062f\u0648\u0646 \u062d\u0627\u0644\u062a \u0647\u0633\u062a\u0646\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0631\u0627\u0647 \u0627\u0635\u0644\u06cc \u0628\u0631\u0627\u06cc \u0627\u0646\u062a\u0642\u0627\u0644 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627 \u0628\u0647 \u06cc\u06a9 \u0645\u0627\u0698\u0648\u0644 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u062a\u0627\u0628\u0639 \u0627\u0633\u062a.  \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 \u0645\u0627\u0698\u0648\u0644\u200c\u0647\u0627\u06cc Elixir \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0646\u062f\u060c \u0627\u0645\u0627 \u0628\u0631\u0627\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0648 \u0627\u0628\u0631\u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u0632\u0645\u0627\u0646 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f\u060c \u0646\u0647 \u0628\u0631\u0627\u06cc \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u062d\u0627\u0644\u062a \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627.<\/p>\n<p>\u0631\u0627 \u0628\u06af\u06cc\u0631\u06cc\u062f <code>EmailScanner<\/code> \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644 \u0645\u0627\u0698\u0648\u0644  \u0628\u0627\u06cc\u062f \u0628\u06af\u0630\u0631\u06cc\u0645 <code>SpamFilterService<\/code> \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u06cc \u0628\u0631\u0627\u06cc <code>scan_email<\/code> \u062a\u0627\u0628\u0639.  \u0627\u06cc\u0646 \u063a\u06cc\u0631\u0636\u0631\u0648\u0631\u06cc \u0627\u0633\u062a\u060c \u0632\u06cc\u0631\u0627 \u062a\u0646\u0647\u0627 \u062f\u0644\u06cc\u0644 \u062f\u0627\u0634\u062a\u0646 \u0627\u06cc\u0646 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u0628\u0639\u060c \u0622\u0632\u0645\u0627\u06cc\u0634 \u067e\u0630\u06cc\u0631 \u0633\u0627\u062e\u062a\u0646 \u0645\u0627\u0698\u0648\u0644 \u0627\u0633\u062a.<\/p>\n<p>\u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0627\u06cc\u0646\u060c \u0686\u0646\u062f \u0645\u0634\u06a9\u0644 \u0628\u0627 \u062e\u0648\u0627\u0646\u0627\u06cc\u06cc \u06a9\u062f \u0648 \u0646\u0627\u0648\u0628\u0631\u06cc \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f:<\/p>\n<ul>\n<li>\u0632\u06cc\u0631\u0627 \u0645\u0627\u0698\u0648\u0644 \u062f\u0631 \u0627\u0646\u062a\u0638\u0627\u0631 \u0627\u0633\u062a <code>SpamFilterService<\/code> \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u060c \u0645\u0627 \u0646\u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0647 \u0631\u0627\u062d\u062a\u06cc \u0628\u0628\u06cc\u0646\u06cc\u0645 \u06a9\u0647 \u0645\u0627\u0698\u0648\u0644 \u0628\u0647 \u0686\u0647 \u0686\u06cc\u0632\u06cc \u0628\u0633\u062a\u06af\u06cc \u062f\u0627\u0631\u062f.<\/li>\n<li>\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0645\u0634\u06a9\u0644\u0627\u062a \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0627\u062c\u0631\u0627\u06cc \u0645\u0627\u0698\u0648\u0644 \u0631\u0627 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u062f\u060c \u0632\u06cc\u0631\u0627 \u0645\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0647\u0631 \u0645\u0627\u0698\u0648\u0644\u06cc \u0631\u0627 \u06a9\u0647 \u0622\u0646 \u0631\u0627 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u067e\u0627\u0633 \u06a9\u0646\u06cc\u0645 <code>SpamFilterService<\/code> \u0631\u0641\u062a\u0627\u0631 &#8211; \u0627\u062e\u0644\u0627\u0642.<\/li>\n<\/ul>\n<p>\u0627\u06cc\u0646 \u0631\u0648\u06cc\u06a9\u0631\u062f \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0628\u0631\u0627\u06cc \u067e\u0631\u0648\u0698\u0647 \u0647\u0627\u06cc \u06a9\u0648\u0686\u06a9 \u0628\u0647 \u062e\u0648\u0628\u06cc \u06a9\u0627\u0631 \u06a9\u0646\u062f\u060c \u0627\u0645\u0627 \u0628\u0627 \u0631\u0634\u062f \u067e\u0631\u0648\u0698\u0647 \u0645\u0627\u060c \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0645\u062a\u0648\u062c\u0647 \u0634\u0648\u06cc\u0645 \u06a9\u0647 \u0647\u0645\u0627\u0646 \u0627\u0644\u06af\u0648 \u0631\u0627 \u0628\u0627\u0631\u0647\u0627 \u0648 \u0628\u0627\u0631\u0647\u0627 \u062a\u06a9\u0631\u0627\u0631 \u0645\u06cc \u06a9\u0646\u06cc\u0645.  \u0628\u0627 Rewire\u060c \u0645\u0627 \u0646\u0628\u0627\u06cc\u062f \u0646\u06af\u0631\u0627\u0646 \u0627\u06cc\u0646 \u0645\u0633\u0627\u0626\u0644 \u0628\u0627\u0634\u06cc\u0645.  \u0645\u0627 \u0641\u0642\u0637 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0631\u0648\u06cc \u0646\u0648\u0634\u062a\u0646 \u06a9\u062f\u0647\u0627\u06cc \u062a\u0645\u06cc\u0632 \u0648 \u0642\u0627\u0628\u0644 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u062a\u0645\u0631\u06a9\u0632 \u06a9\u0646\u06cc\u0645 \u0648 \u062f\u0631 \u0639\u06cc\u0646 \u062d\u0627\u0644 \u0646\u06af\u0631\u0627\u0646\u06cc\u200c\u0647\u0627\u06cc \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0622\u0632\u0645\u0627\u06cc\u0634\u060c \u062a\u0645\u0633\u062e\u0631\u0647\u0627 \u0648 \u0645\u0648\u0627\u0631\u062f \u062e\u0631\u062f \u0631\u0627 \u062f\u0631 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u062e\u0648\u062f \u062d\u0641\u0638 \u06a9\u0646\u06cc\u0645.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%B4%D8%B1%D9%88%D8%B9_%DA%A9%D8%A7%D8%B1_%D8%A8%D8%A7_Rewire_%D9%88_Mox_%D8%AF%D8%B1_%D9%BE%D8%B1%D9%88%DA%98%D9%87_%D8%A7%DA%A9%D8%B3%DB%8C%D8%B1_%D8%B4%D9%85%D8%A7\"><\/span>\n<p>  \u0634\u0631\u0648\u0639 \u06a9\u0627\u0631 \u0628\u0627 Rewire \u0648 Mox \u062f\u0631 \u067e\u0631\u0648\u0698\u0647 \u0627\u06a9\u0633\u06cc\u0631 \u0634\u0645\u0627<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0627\u06a9\u0646\u0648\u0646 \u0628\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Rewire \u0648 Mox \u062f\u0631 \u0639\u0645\u0644 \u0628\u067e\u0631\u062f\u0627\u0632\u06cc\u0645.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D9%85%D8%B1%D8%AD%D9%84%D9%87_1_%DB%8C%DA%A9_%D9%BE%D8%B1%D9%88%DA%98%D9%87_%D8%A7%DA%A9%D8%B3%DB%8C%D8%B1_%D8%AC%D8%AF%DB%8C%D8%AF_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  \u0645\u0631\u062d\u0644\u0647 1: \u06cc\u06a9 \u067e\u0631\u0648\u0698\u0647 \u0627\u06a9\u0633\u06cc\u0631 \u062c\u062f\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0642\u0628\u0644 \u0627\u0632 \u062a\u0631\u06a9\u06cc\u0628 Rewire \u0648 Mox\u060c \u06cc\u06a9 \u067e\u0631\u0648\u0698\u0647 Elixir \u062c\u062f\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>mix new email_scanner\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u06cc\u06a9 \u067e\u0631\u0648\u0698\u0647 Elixir \u062c\u062f\u06cc\u062f \u0628\u0647 \u0646\u0627\u0645 \u062a\u0648\u0644\u06cc\u062f \u0645\u06cc \u06a9\u0646\u062f <code>email_scanner<\/code>\u060c \u0627\u0632 \u062c\u0645\u0644\u0647 \u0633\u0627\u062e\u062a\u0627\u0631 \u062f\u0631\u062e\u062a \u0646\u0638\u0627\u0631\u062a.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D9%85%D8%B1%D8%AD%D9%84%D9%87_2_%D8%A7%D9%81%D8%B2%D9%88%D8%AF%D9%86_%D9%88%D8%A7%D8%A8%D8%B3%D8%AA%DA%AF%DB%8C_%D9%87%D8%A7\"><\/span>\n<p>  \u0645\u0631\u062d\u0644\u0647 2: \u0627\u0641\u0632\u0648\u062f\u0646 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Rewire \u0648 Mox\u060c \u0628\u0627\u06cc\u062f \u0622\u0646\u0647\u0627 \u0631\u0627 \u0628\u0647 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627\u06cc \u067e\u0631\u0648\u0698\u0647 \u062e\u0648\u062f \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f.  \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0631\u0648\u0632 \u06a9\u0646\u06cc\u062f <code>mix.exs<\/code> \u0628\u0647 \u0635\u0648\u0631\u062a \u0632\u06cc\u0631 \u0641\u0627\u06cc\u0644 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight elixir\"><code><span class=\"k\">defp<\/span> <span class=\"n\">deps<\/span> <span class=\"k\">do<\/span>\n  <span class=\"p\">[<\/span>\n    <span class=\"p\">{<\/span><span class=\"ss\">:rewire<\/span><span class=\"p\">,<\/span> <span class=\"s2\">\"~&gt; 1.0\"<\/span><span class=\"p\">,<\/span> <span class=\"ss\">only:<\/span> <span class=\"ss\">:test<\/span><span class=\"p\">},<\/span>\n    <span class=\"p\">{<\/span><span class=\"ss\">:mox<\/span><span class=\"p\">,<\/span> <span class=\"s2\">\"~&gt; 1.0\"<\/span><span class=\"p\">,<\/span> <span class=\"ss\">only:<\/span> <span class=\"ss\">:test<\/span><span class=\"p\">}<\/span>\n  <span class=\"p\">]<\/span>\n<span class=\"k\">end<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u067e\u0633 \u0627\u0632 \u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627\u060c \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f <code>mix deps.get<\/code> \u062f\u0631 \u062a\u0631\u0645\u06cc\u0646\u0627\u0644 \u062e\u0648\u062f \u0628\u0631\u0627\u06cc \u0648\u0627\u06a9\u0634\u06cc \u0648 \u0646\u0635\u0628 \u0622\u0646\u0647\u0627.<\/p>\n<p>\u0628\u0639\u062f\u060c \u0627\u062c\u0627\u0632\u0647 \u062f\u0647\u06cc\u062f \u062f\u0648 \u0645\u0627\u0698\u0648\u0644 \u0627\u0635\u0644\u06cc \u062e\u0648\u062f \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight elixir\"><code><span class=\"k\">defmodule<\/span> <span class=\"no\">EmailScanner<\/span> <span class=\"k\">do<\/span>\n  <span class=\"k\">def<\/span> <span class=\"n\">filter_email<\/span><span class=\"p\">(<\/span><span class=\"n\">email<\/span><span class=\"p\">)<\/span> <span class=\"k\">do<\/span>\n    <span class=\"n\">email<\/span>\n    <span class=\"o\">|&gt;<\/span> <span class=\"n\">mark_as_important<\/span><span class=\"p\">()<\/span>\n    <span class=\"o\">|&gt;<\/span> <span class=\"no\">SpamFilterService<\/span><span class=\"o\">.<\/span><span class=\"n\">check_spam<\/span><span class=\"p\">()<\/span>\n  <span class=\"k\">end<\/span>\n\n  <span class=\"k\">defp<\/span> <span class=\"n\">mark_as_important<\/span><span class=\"p\">(<\/span><span class=\"n\">email<\/span><span class=\"p\">)<\/span> <span class=\"k\">do<\/span>\n    <span class=\"n\">important_senders<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[<\/span><span class=\"s2\">\"boss@example.com\"<\/span><span class=\"p\">,<\/span> <span class=\"s2\">\"hr@example.com\"<\/span><span class=\"p\">]<\/span>\n\n    <span class=\"n\">updated_email<\/span> <span class=\"o\">=<\/span>\n      <span class=\"k\">if<\/span> <span class=\"no\">Enum<\/span><span class=\"o\">.<\/span><span class=\"n\">any?<\/span><span class=\"p\">(<\/span><span class=\"n\">important_senders<\/span><span class=\"p\">,<\/span> <span class=\"k\">fn<\/span> <span class=\"n\">sender<\/span> <span class=\"o\">-&gt;<\/span> <span class=\"n\">sender<\/span> <span class=\"o\">==<\/span> <span class=\"n\">email<\/span><span class=\"o\">.<\/span><span class=\"n\">sender<\/span> <span class=\"k\">end<\/span><span class=\"p\">)<\/span> <span class=\"k\">do<\/span>\n        <span class=\"p\">%{<\/span><span class=\"n\">email<\/span> <span class=\"o\">|<\/span> <span class=\"ss\">important:<\/span> <span class=\"no\">true<\/span><span class=\"p\">}<\/span>\n      <span class=\"k\">else<\/span>\n        <span class=\"n\">email<\/span>\n      <span class=\"k\">end<\/span>\n\n    <span class=\"n\">updated_email<\/span>\n  <span class=\"k\">end<\/span>\n<span class=\"k\">end<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u0627 \u0645\u062b\u0627\u0644 \u06a9\u062f \u062e\u0648\u062f \u0631\u0627 \u06a9\u0645\u06cc \u0648\u0627\u0642\u0639\u06cc \u062a\u0631 \u0645\u06cc \u06a9\u0646\u06cc\u0645.  \u0627\u06cc\u0646 <code>filter_email<\/code> \u062a\u0627\u0628\u0639 \u0627\u06cc\u0645\u06cc\u0644\u200c\u0647\u0627\u06cc \u0627\u0631\u0633\u0627\u0644\u200c\u06a9\u0646\u0646\u062f\u0647\u200c\u0647\u0627\u06cc \u0645\u0647\u0645 \u0631\u0627 \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u0645\u0647\u0645 \u0639\u0644\u0627\u0645\u062a\u200c\u06af\u0630\u0627\u0631\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 \u0627\u06cc\u0645\u06cc\u0644\u200c\u0647\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0647\u0631\u0632\u0646\u0627\u0645\u0647 \u0647\u0633\u062a\u0646\u062f \u06cc\u0627 \u062e\u06cc\u0631 <code>SpamFilterService<\/code> \u0645\u062f\u0648\u0644.<\/p>\n<p>\u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f\u060c \u0645\u0627 \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>SpamFilterService<\/code> \u0645\u062f\u0648\u0644:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight elixir\"><code><span class=\"k\">defmodule<\/span> <span class=\"no\">SpamFilterService<\/span> <span class=\"k\">do<\/span>\n  <span class=\"k\">def<\/span> <span class=\"n\">check_spam<\/span><span class=\"p\">(<\/span><span class=\"n\">email_content<\/span><span class=\"p\">)<\/span> <span class=\"k\">do<\/span>\n    <span class=\"no\">String<\/span><span class=\"o\">.<\/span><span class=\"n\">contains?<\/span><span class=\"p\">(<\/span><span class=\"n\">email_content<\/span><span class=\"p\">,<\/span> <span class=\"s2\">\"spam\"<\/span><span class=\"p\">)<\/span>\n  <span class=\"k\">end<\/span>\n<span class=\"k\">end<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u06cc\u06a9 \u062a\u0633\u062a \u0627\u0633\u0627\u0633\u06cc \u0628\u0631\u0627\u06cc \u0622\u0646 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645 <code>EmailScanner<\/code> \u0645\u062f\u0648\u0644:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight elixir\"><code><span class=\"k\">defmodule<\/span> <span class=\"no\">EmailScannerTest<\/span> <span class=\"k\">do<\/span>\n  <span class=\"kn\">use<\/span> <span class=\"no\">ExUnit<\/span><span class=\"o\">.<\/span><span class=\"no\">Case<\/span>\n\n  <span class=\"n\">describe<\/span> <span class=\"s2\">\"filter_email\/2\"<\/span> <span class=\"k\">do<\/span>\n    <span class=\"n\">test<\/span> <span class=\"s2\">\"marks email as important from specific sender and checks for spam\"<\/span> <span class=\"k\">do<\/span>\n      <span class=\"n\">important_sender_email<\/span> <span class=\"o\">=<\/span> <span class=\"p\">%{<\/span><span class=\"ss\">sender:<\/span> <span class=\"s2\">\"boss@example.com\"<\/span><span class=\"p\">,<\/span> <span class=\"ss\">content:<\/span> <span class=\"s2\">\"Please review the attached report.\"<\/span><span class=\"p\">,<\/span> <span class=\"ss\">important:<\/span> <span class=\"no\">false<\/span><span class=\"p\">}<\/span>\n      <span class=\"n\">non_important_sender_email<\/span> <span class=\"o\">=<\/span> <span class=\"p\">%{<\/span><span class=\"ss\">sender:<\/span> <span class=\"s2\">\"random@example.com\"<\/span><span class=\"p\">,<\/span> <span class=\"ss\">content:<\/span> <span class=\"s2\">\"Check out these deals!\"<\/span><span class=\"p\">,<\/span> <span class=\"ss\">important:<\/span> <span class=\"no\">false<\/span><span class=\"p\">}<\/span>\n\n      <span class=\"c1\"># Filtering emails sent from the important sender<\/span>\n      <span class=\"n\">assert<\/span> <span class=\"p\">%{<\/span><span class=\"ss\">important:<\/span> <span class=\"no\">true<\/span><span class=\"p\">,<\/span> <span class=\"ss\">is_spam:<\/span> <span class=\"no\">false<\/span><span class=\"p\">}<\/span> <span class=\"o\">=<\/span> <span class=\"no\">EmailScanner<\/span><span class=\"o\">.<\/span><span class=\"n\">filter_email<\/span><span class=\"p\">(<\/span><span class=\"n\">important_sender_email<\/span><span class=\"p\">)<\/span>\n\n      <span class=\"c1\"># Filtering emails sent from a non-important sender<\/span>\n      <span class=\"n\">assert<\/span> <span class=\"p\">%{<\/span><span class=\"ss\">important:<\/span> <span class=\"no\">false<\/span><span class=\"p\">,<\/span> <span class=\"ss\">is_spam:<\/span> <span class=\"no\">false<\/span><span class=\"p\">}<\/span> <span class=\"o\">=<\/span> <span class=\"no\">EmailScanner<\/span><span class=\"o\">.<\/span><span class=\"n\">filter_email<\/span><span class=\"p\">(<\/span><span class=\"n\">non_important_sender_email<\/span><span class=\"p\">)<\/span>\n    <span class=\"k\">end<\/span>\n  <span class=\"k\">end<\/span>\n<span class=\"k\">end<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062f\u0631 \u06a9\u062f \u0628\u0627\u0644\u0627\u060c <code>EmailScanner<\/code> \u0645\u0627\u0698\u0648\u0644 \u0645\u062a\u06a9\u06cc \u0628\u0631 <code>SpamFilterService<\/code> \u0645\u0627\u0698\u0648\u0644 \u0628\u0631\u0627\u06cc \u0628\u0631\u0631\u0633\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0622\u06cc\u0627 \u06cc\u06a9 \u0627\u06cc\u0645\u06cc\u0644 \u0627\u0633\u067e\u0645 \u0627\u0633\u062a \u06cc\u0627 \u062e\u06cc\u0631.  \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u0645\u0627 \u0646\u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0622\u0646 \u0631\u0627 \u0622\u0632\u0645\u0627\u06cc\u0634 \u06a9\u0646\u06cc\u0645 <code>EmailScanner<\/code> \u0645\u0627\u0698\u0648\u0644 \u0628\u062f\u0648\u0646 \u0622\u0632\u0645\u0627\u06cc\u0634 <code>SpamFilterService<\/code> \u0645\u0627\u0698\u0648\u0644\u060c \u06a9\u0647 \u0627\u06cc\u062f\u0647 \u0622\u0644 \u0646\u06cc\u0633\u062a.<\/p>\n<p>\u0628\u0627\u06cc\u062f \u0645\u0633\u062e\u0631\u0647 \u06a9\u0646\u06cc\u0645 <code>SpamFilterService<\/code> \u0645\u0627\u0698\u0648\u0644 \u062a\u0627 \u0628\u062a\u0648\u0627\u0646\u06cc\u0645 \u0622\u0646 \u0631\u0627 \u062a\u0633\u062a \u06a9\u0646\u06cc\u0645 <code>EmailScanner<\/code> \u0645\u0627\u0698\u0648\u0644 \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u062c\u0632\u0627<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D9%85%D8%B1%D8%AD%D9%84%D9%87_3_%D9%BE%DB%8C%DA%A9%D8%B1%D8%A8%D9%86%D8%AF%DB%8C_Mox\"><\/span>\n<p>  \u0645\u0631\u062d\u0644\u0647 3: \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc Mox<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Mox \u0628\u0647 \u0645\u0642\u062f\u0627\u0631\u06cc \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u062f\u0631 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0634\u0645\u0627 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u062f.  a \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f \u06cc\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f <code>test\/test_helper.exs<\/code> \u0641\u0627\u06cc\u0644 \u06a9\u0646\u06cc\u062f \u0648 \u062e\u0637 \u0632\u06cc\u0631 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u06cc\u06a9 \u0645\u062f\u0644 \u0633\u0627\u062e\u062a\u06af\u06cc \u0628\u0631 \u0627\u0633\u0627\u0633 \u067e\u0631\u0648\u062a\u06a9\u0644 \u06cc\u0627 \u0631\u0641\u062a\u0627\u0631\u06cc \u06a9\u0647 \u067e\u0631\u0648\u0698\u0647 \u0634\u0645\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight elixir\"><code><span class=\"no\">ExUnit<\/span><span class=\"o\">.<\/span><span class=\"n\">start<\/span><span class=\"p\">()<\/span>\n<span class=\"no\">Mox<\/span><span class=\"o\">.<\/span><span class=\"n\">defmock<\/span><span class=\"p\">(<\/span><span class=\"no\">EmailScanner<\/span><span class=\"o\">.<\/span><span class=\"no\">SpamFilterServiceMock<\/span><span class=\"p\">,<\/span> <span class=\"ss\">for:<\/span> <span class=\"no\">EmailScanner<\/span><span class=\"o\">.<\/span><span class=\"no\">SpamFilterService<\/span><span class=\"p\">)<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>Mox \u0633\u0627\u062e\u062a \u0645\u0633\u062e\u0631\u0647\u200c\u0647\u0627\u06cc \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u0631\u0641\u062a\u0627\u0631\u0647\u0627 \u06cc\u0627 \u067e\u0631\u0648\u062a\u06a9\u0644\u200c\u0647\u0627 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0645\u0627 \u0622\u0633\u0627\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634 \u0645\u0627\u0698\u0648\u0644\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0628\u0631 \u0627\u06cc\u0646 \u0627\u0646\u062a\u0632\u0627\u0639\u200c\u0647\u0627 \u0645\u062a\u06a9\u06cc \u0647\u0633\u062a\u0646\u062f \u0636\u0631\u0648\u0631\u06cc \u0627\u0633\u062a.<\/p>\n<p>\u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u0645\u0627\u06a9 \u0645\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0634\u062f\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0647 \u062c\u0627\u06cc \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0648\u0627\u0642\u0639\u06cc \u0627\u0632 \u0622\u0646 \u062f\u0631 \u062a\u0633\u062a\u200c\u0647\u0627\u06cc \u062e\u0648\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645.  \u0628\u0627 Rewire\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0627\u06cc\u0646 \u0645\u062f\u0644\u200c\u0647\u0627 \u0631\u0627 \u0628\u062f\u0648\u0646 \u062a\u06a9\u06cc\u0647 \u0628\u0631 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u062a\u0627\u0628\u0639 \u0628\u0647 \u0645\u0627\u0698\u0648\u0644\u200c\u0647\u0627\u06cc \u062e\u0648\u062f \u062a\u0632\u0631\u06cc\u0642 \u06a9\u0646\u06cc\u0645.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D9%85%D9%81%D8%A7%D9%87%DB%8C%D9%85_%D8%A7%D8%B5%D9%84%DB%8C_Rewire\"><\/span>\n<p>  \u0645\u0641\u0627\u0647\u06cc\u0645 \u0627\u0635\u0644\u06cc Rewire<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Rewire \u0628\u0627 \u0627\u0631\u0627\u0626\u0647 \u06cc\u06a9 \u0631\u0648\u06cc\u06a9\u0631\u062f \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u06a9\u0644\u0627\u0646 \u0628\u0631\u0627\u06cc \u062a\u0639\u0631\u06cc\u0641 \u0648 \u062a\u0632\u0631\u06cc\u0642 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627\u060c \u0641\u0631\u0622\u06cc\u0646\u062f DI \u0631\u0627 \u062f\u0631 Elixir \u0633\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f.  \u0627\u06cc\u0646 \u06cc\u06a9\u067e\u0627\u0631\u0686\u0647 \u062f\u0631 \u0627\u06a9\u0648\u0633\u06cc\u0633\u062a\u0645 \u0627\u06a9\u0633\u06cc\u0631 \u0642\u0631\u0627\u0631 \u0645\u06cc \u06af\u06cc\u0631\u062f \u0648 \u06a9\u062f\u0647\u0627\u06cc \u062a\u0645\u06cc\u0632 \u0648 \u0642\u0627\u0628\u0644 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0631\u0627 \u062a\u0631\u0648\u06cc\u062c \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%AA%D8%B2%D8%B1%DB%8C%D9%82_%D9%88%D8%A7%D8%A8%D8%B3%D8%AA%DA%AF%DB%8C_%D8%A8%D8%A7_Rewire_%D8%AF%D8%B1_EmailScanner_%D9%85%D8%AF%D9%88%D9%84\"><\/span>\n<p>  \u062a\u0632\u0631\u06cc\u0642 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0628\u0627 Rewire \u062f\u0631 <code>EmailScanner<\/code> \u0645\u062f\u0648\u0644<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u06a9\u0646\u06cc\u0645 <code>EmailScanner<\/code> \u0645\u0627\u0698\u0648\u0644\u060c \u06a9\u0647 \u0645\u062a\u06a9\u06cc \u0628\u0631 a <code>SpamFilterService<\/code> \u0628\u0631\u0627\u06cc \u0628\u0631\u0631\u0633\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0622\u06cc\u0627 \u06cc\u06a9 \u0627\u06cc\u0645\u06cc\u0644 \u0627\u0633\u067e\u0645 \u0627\u0633\u062a \u06cc\u0627 \u062e\u06cc\u0631.  \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Rewire \u0628\u0647 \u0631\u0627\u062d\u062a\u06cc \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0627\u06cc\u0646 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0631\u0627 \u062a\u0632\u0631\u06cc\u0642 \u06a9\u0646\u06cc\u0645.  \u0628\u0647 \u06a9\u062f \u0632\u06cc\u0631 \u062f\u0642\u062a \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight elixir\"><code><span class=\"k\">defmodule<\/span> <span class=\"no\">EmailScanner<\/span> <span class=\"k\">do<\/span>\n  <span class=\"k\">def<\/span> <span class=\"n\">filter_email<\/span><span class=\"p\">(<\/span><span class=\"n\">email<\/span><span class=\"p\">)<\/span> <span class=\"k\">do<\/span>\n    <span class=\"n\">email<\/span>\n    <span class=\"o\">|&gt;<\/span> <span class=\"n\">mark_as_important<\/span><span class=\"p\">()<\/span>\n    <span class=\"o\">|&gt;<\/span> <span class=\"no\">SpamFilterService<\/span><span class=\"o\">.<\/span><span class=\"n\">check_spam<\/span><span class=\"p\">()<\/span>\n  <span class=\"k\">end<\/span>\n\n  <span class=\"k\">defp<\/span> <span class=\"n\">mark_as_important<\/span><span class=\"p\">(<\/span><span class=\"n\">email<\/span><span class=\"p\">)<\/span> <span class=\"k\">do<\/span>\n    <span class=\"n\">important_senders<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[<\/span><span class=\"s2\">\"boss@example.com\"<\/span><span class=\"p\">,<\/span> <span class=\"s2\">\"hr@example.com\"<\/span><span class=\"p\">]<\/span>\n\n    <span class=\"n\">updated_email<\/span> <span class=\"o\">=<\/span>\n      <span class=\"k\">if<\/span> <span class=\"no\">Enum<\/span><span class=\"o\">.<\/span><span class=\"n\">any?<\/span><span class=\"p\">(<\/span><span class=\"n\">important_senders<\/span><span class=\"p\">,<\/span> <span class=\"k\">fn<\/span> <span class=\"n\">sender<\/span> <span class=\"o\">-&gt;<\/span> <span class=\"n\">sender<\/span> <span class=\"o\">==<\/span> <span class=\"n\">email<\/span><span class=\"o\">.<\/span><span class=\"n\">sender<\/span> <span class=\"k\">end<\/span><span class=\"p\">)<\/span> <span class=\"k\">do<\/span>\n        <span class=\"p\">%{<\/span><span class=\"n\">email<\/span> <span class=\"o\">|<\/span> <span class=\"ss\">important:<\/span> <span class=\"no\">true<\/span><span class=\"p\">}<\/span>\n      <span class=\"k\">else<\/span>\n        <span class=\"n\">email<\/span>\n      <span class=\"k\">end<\/span>\n\n    <span class=\"n\">updated_email<\/span>\n  <span class=\"k\">end<\/span>\n<span class=\"k\">end<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"%D8%AA%D9%85%D8%B3%D8%AE%D8%B1_%D8%A8%D8%A7_%D9%85%D9%88%DA%A9%D8%B3_%D8%A8%D8%B1%D8%A7%DB%8C_%D8%AA%D8%B3%D8%AA\"><\/span>\n<p>  \u062a\u0645\u0633\u062e\u0631 \u0628\u0627 \u0645\u0648\u06a9\u0633 \u0628\u0631\u0627\u06cc \u062a\u0633\u062a<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0628\u0631\u0627\u06cc \u062a\u0633\u062a \u06a9\u0631\u062f\u0646 <code>EmailScanner<\/code> \u062a\u0627\u0628\u0639 \u0641\u06cc\u0644\u062a\u0631\u060c \u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0627\u0632 Mox \u0628\u0631\u0627\u06cc \u062a\u0645\u0633\u062e\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645 <code>SpamFilterService<\/code> \u0645\u062f\u0648\u0644:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight elixir\"><code><span class=\"k\">defmodule<\/span> <span class=\"no\">EmailScannerTest<\/span> <span class=\"k\">do<\/span>\n  <span class=\"kn\">use<\/span> <span class=\"no\">ExUnit<\/span><span class=\"o\">.<\/span><span class=\"no\">Case<\/span>\n\n  <span class=\"kn\">import<\/span> <span class=\"no\">Rewire<\/span>\n  <span class=\"kn\">import<\/span> <span class=\"no\">Mox<\/span>\n\n  <span class=\"n\">rewire<\/span> <span class=\"no\">EmailScanner<\/span><span class=\"p\">,<\/span> <span class=\"ss\">SpamFilterService:<\/span> <span class=\"no\">SpamFilterServiceMock<\/span>\n\n  <span class=\"c1\"># Ensure mocks are verified after each test<\/span>\n  <span class=\"n\">setup<\/span> <span class=\"ss\">:verify_on_exit!<\/span>\n\n  <span class=\"n\">describe<\/span> <span class=\"s2\">\"filter_email\/2\"<\/span> <span class=\"k\">do<\/span>\n    <span class=\"n\">test<\/span> <span class=\"s2\">\"marks email as important from specific sender and checks for spam\"<\/span> <span class=\"k\">do<\/span>\n      <span class=\"n\">important_sender_email<\/span> <span class=\"o\">=<\/span> <span class=\"p\">%{<\/span><span class=\"ss\">sender:<\/span> <span class=\"s2\">\"boss@example.com\"<\/span><span class=\"p\">,<\/span> <span class=\"ss\">content:<\/span> <span class=\"s2\">\"Please review the attached report.\"<\/span><span class=\"p\">,<\/span> <span class=\"ss\">important:<\/span> <span class=\"no\">false<\/span><span class=\"p\">}<\/span>\n      <span class=\"n\">non_important_sender_email<\/span> <span class=\"o\">=<\/span> <span class=\"p\">%{<\/span><span class=\"ss\">sender:<\/span> <span class=\"s2\">\"random@example.com\"<\/span><span class=\"p\">,<\/span> <span class=\"ss\">content:<\/span> <span class=\"s2\">\"Check out these deals!\"<\/span><span class=\"p\">,<\/span> <span class=\"ss\">important:<\/span> <span class=\"no\">false<\/span><span class=\"p\">}<\/span>\n\n      <span class=\"c1\"># Stub the SpamFilter service to return false for all emails<\/span>\n      <span class=\"n\">stub<\/span><span class=\"p\">(<\/span><span class=\"no\">SpamFilterServiceMock<\/span><span class=\"p\">,<\/span> <span class=\"ss\">:check_spam<\/span><span class=\"p\">,<\/span> <span class=\"k\">fn<\/span> <span class=\"n\">_email<\/span> <span class=\"o\">-&gt;<\/span> <span class=\"ss\">:false<\/span> <span class=\"k\">end<\/span><span class=\"p\">)<\/span>\n\n      <span class=\"c1\"># Filtering emails sent from the important sender<\/span>\n      <span class=\"n\">assert<\/span> <span class=\"p\">%{<\/span><span class=\"ss\">important:<\/span> <span class=\"no\">true<\/span><span class=\"p\">,<\/span> <span class=\"ss\">is_spam:<\/span> <span class=\"no\">false<\/span><span class=\"p\">}<\/span> <span class=\"o\">=<\/span> <span class=\"no\">EmailScanner<\/span><span class=\"o\">.<\/span><span class=\"n\">filter_email<\/span><span class=\"p\">(<\/span><span class=\"n\">important_sender_email<\/span><span class=\"p\">)<\/span>\n\n      <span class=\"c1\"># Filtering emails sent from a non-important sender<\/span>\n      <span class=\"n\">assert<\/span> <span class=\"p\">%{<\/span><span class=\"ss\">important:<\/span> <span class=\"no\">false<\/span><span class=\"p\">,<\/span> <span class=\"ss\">is_spam:<\/span> <span class=\"no\">false<\/span><span class=\"p\">}<\/span> <span class=\"o\">=<\/span> <span class=\"no\">EmailScanner<\/span><span class=\"o\">.<\/span><span class=\"n\">filter_email<\/span><span class=\"p\">(<\/span><span class=\"n\">non_important_sender_email<\/span><span class=\"p\">)<\/span>\n    <span class=\"k\">end<\/span>\n  <span class=\"k\">end<\/span>\n<span class=\"k\">end<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0622\u0646\u0686\u0647 \u0631\u0627 \u06a9\u0647 \u062f\u0631 \u062a\u0633\u062a \u0628\u0627\u0644\u0627 \u0627\u062a\u0641\u0627\u0642 \u0645\u06cc \u0627\u0641\u062a\u062f \u062a\u062c\u0632\u06cc\u0647 \u06a9\u0646\u06cc\u0645:<\/p>\n<p>\u062f\u0631 \u0632\u06cc\u0631 \u06a9\u0627\u067e\u0648\u062a\u060c Rewire \u062f\u0631 \u062d\u0627\u0644 \u0627\u0646\u062c\u0627\u0645 \u0686\u0646\u062f \u06a9\u0627\u0631 \u062c\u0627\u0644\u0628 \u0627\u0633\u062a.  \u0627\u0648\u0644\u060c \u062f\u0631\u06a9 \u0641\u0644\u0633\u0641\u0647 \u067e\u0634\u062a Rewire \u0648 \u0631\u0648\u06cc\u06a9\u0631\u062f\u06cc \u06a9\u0647 \u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u062a\u0635\u0645\u06cc\u0645 \u06af\u0631\u0641\u062a\u0647 \u0627\u0633\u062a \u0631\u0627 \u062f\u0631\u06a9 \u06a9\u0646\u06cc\u062f. <code>rewire<\/code> \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0645\u0627\u06a9\u0631\u0648\u0647\u0627 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u06a9\u067e\u06cc \u0627\u0632 \u0645\u0627\u0698\u0648\u0644 \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f.  \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646\u060c \u0628\u0631\u0627\u06cc \u0647\u0631 \u0622\u0632\u0645\u0627\u06cc\u0634\u060c Rewire \u06cc\u06a9 \u0645\u0627\u0698\u0648\u0644 \u062c\u062f\u06cc\u062f \u0628\u0627 \u062e\u0631\u062f\u0647\u0627\u06cc \u0645\u0634\u062e\u0635 \u0634\u062f\u0647 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u06a9\u067e\u06cc \u0627\u0632 \u0647\u0631 \u0645\u0627\u0698\u0648\u0644 \u0628\u0647 \u062c\u0627\u06cc \u0646\u0627\u062f\u06cc\u062f\u0647 \u06af\u0631\u0641\u062a\u0646 \u0645\u0627\u0698\u0648\u0644 \u0627\u0635\u0644\u06cc \u0628\u0647 \u0645\u0627 \u0627\u06cc\u0646 \u0627\u0645\u06a9\u0627\u0646 \u0631\u0627 \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 \u0622\u0632\u0645\u0627\u06cc\u0634 \u0647\u0627 \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u0648\u0627\u0632\u06cc \u0628\u062f\u0648\u0646 \u0647\u06cc\u0686 \u06af\u0648\u0646\u0647 \u0639\u0648\u0627\u0631\u0636 \u062c\u0627\u0646\u0628\u06cc \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u0645.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D9%85%D9%88%D8%A7%D8%B1%D8%AF%DB%8C_%DA%A9%D9%87_%D9%87%D9%86%DA%AF%D8%A7%D9%85_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D8%A7%D8%B2_Rewire_%D9%88_Mox_%D8%A8%D8%A7%DB%8C%D8%AF_%D8%AF%D8%B1_%D9%86%D8%B8%D8%B1_%D8%A8%DA%AF%DB%8C%D8%B1%DB%8C%D8%AF\"><\/span>\n<p>  \u0645\u0648\u0627\u0631\u062f\u06cc \u06a9\u0647 \u0647\u0646\u06af\u0627\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Rewire \u0648 Mox \u0628\u0627\u06cc\u062f \u062f\u0631 \u0646\u0638\u0631 \u0628\u06af\u06cc\u0631\u06cc\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0647\u0646\u06af\u0627\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Rewire \u0648 Mox \u062f\u0631 \u067e\u0631\u0648\u0698\u0647 \u0647\u0627\u06cc Elixir \u062e\u0648\u062f\u060c \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0631 \u0646\u0638\u0631 \u0628\u06af\u06cc\u0631\u06cc\u062f:<\/p>\n<ul>\n<li>\n<strong>\u0633\u0627\u0632\u06af\u0627\u0631\u06cc \u062a\u0633\u062a \u0646\u0627\u0647\u0645\u0632\u0645\u0627\u0646:<\/strong><br \/>\nRewire \u0628\u0647 \u0637\u0648\u0631 \u06a9\u0627\u0645\u0644 \u0627\u0632 \u062a\u0633\u062a \u0646\u0627\u0647\u0645\u0632\u0645\u0627\u0646 \u0628\u0627 <code>async: true<\/code>.  \u0628\u0631\u062e\u0644\u0627\u0641 \u0646\u0627\u062f\u06cc\u062f\u0647 \u06af\u0631\u0641\u062a\u0646 \u062c\u0647\u0627\u0646\u06cc \u06a9\u0647 \u062a\u0648\u0633\u0637 \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f Meck \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f\u060c Rewire \u06cc\u06a9 \u06a9\u067e\u06cc \u0645\u0627\u0698\u0648\u0644 \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u0628\u0631\u0627\u06cc \u0647\u0631 \u0622\u0632\u0645\u0648\u0646 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f.  \u0627\u06cc\u0646 \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u062a\u0633\u062a \u0647\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u0648\u0627\u0632\u06cc \u0628\u062f\u0648\u0646 \u062a\u062f\u0627\u062e\u0644 \u0628\u0627 \u06cc\u06a9\u062f\u06cc\u06af\u0631 \u0627\u062c\u0631\u0627 \u0634\u0648\u0646\u062f.<\/li>\n<li>\n<strong>\u0627\u062f\u063a\u0627\u0645 \u0628\u0627 Mox:<\/strong><br \/>\nRewire \u0628\u0627 \u062a\u0645\u0631\u06a9\u0632 \u0628\u0631 \u062a\u0632\u0631\u06cc\u0642 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0628\u062f\u0648\u0646 \u062f\u06cc\u06a9\u062a\u0647 \u06a9\u0631\u062f\u0646 \u0645\u0646\u0628\u0639 \u0645\u0627\u0698\u0648\u0644 \u0633\u0627\u062e\u062a\u06af\u06cc\u060c Mox \u0631\u0627 \u06a9\u0627\u0645\u0644\u0627\u064b \u062a\u06a9\u0645\u06cc\u0644 \u0645\u06cc \u06a9\u0646\u062f.  \u0627\u06cc\u0646 \u0647\u0645 \u0627\u0641\u0632\u0627\u06cc\u06cc \u0627\u0645\u06a9\u0627\u0646 \u0627\u062f\u063a\u0627\u0645 \u06a9\u0627\u0631\u0622\u0645\u062f \u0648 \u0628\u062f\u0648\u0646 \u062f\u0631\u0632 \u0628\u06cc\u0646 \u0627\u06cc\u0646 \u062f\u0648 \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0622\u0646\u0647\u0627 \u0631\u0627 \u0628\u0647 \u06cc\u06a9 \u062c\u0641\u062a \u0639\u0627\u0644\u06cc \u0628\u0631\u0627\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634 \u0627\u06a9\u0633\u06cc\u0631 \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc \u06a9\u0646\u062f.<\/li>\n<li>\n<strong>\u062a\u0627\u062b\u06cc\u0631 \u0628\u0631 \u0633\u0631\u0639\u062a \u062a\u0633\u062a:<\/strong><br \/>\n\u0633\u06cc\u0645\u200c\u06a9\u0634\u06cc \u0645\u062c\u062f\u062f \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u06a9\u0645\u06cc \u0633\u0631\u0639\u062a \u062a\u0633\u062a\u200c\u0647\u0627\u06cc \u0634\u0645\u0627 \u0631\u0627 \u06a9\u0627\u0647\u0634 \u062f\u0647\u062f\u060c \u0627\u06af\u0631\u0686\u0647 \u062a\u0623\u062b\u06cc\u0631 \u0622\u0646 \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u062d\u062f\u0627\u0642\u0644 \u0627\u0633\u062a.  \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0639\u0645\u0644\u06a9\u0631\u062f \u062c\u0627\u0645\u0639 \u0627\u0632 \u067e\u0627\u06cc\u06af\u0627\u0647 \u0647\u0627\u06cc \u06a9\u062f \u0628\u0632\u0631\u06af \u0647\u0646\u0648\u0632 \u062f\u0631 \u0627\u0646\u062a\u0638\u0627\u0631 \u0627\u0633\u062a.<\/li>\n<li>\n<strong>\u062f\u0642\u062a \u067e\u0648\u0634\u0634 \u062a\u0633\u062a:<\/strong><br \/>\n\u0628\u0644\u0647\u060c \u067e\u0648\u0634\u0634 \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0628\u0647 \u0637\u0648\u0631 \u062f\u0642\u06cc\u0642 \u0628\u0627 Rewire \u06af\u0632\u0627\u0631\u0634 \u0645\u06cc\u200c\u0634\u0648\u062f \u0648 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 \u0645\u0639\u06cc\u0627\u0631\u0647\u0627\u06cc \u067e\u0648\u0634\u0634 \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u062e\u0648\u062f \u0627\u0639\u062a\u0645\u0627\u062f \u06a9\u0646\u06cc\u062f.<\/li>\n<li>\n<strong>\u0633\u0627\u0632\u06af\u0627\u0631\u06cc \u0628\u0627 \u0641\u0631\u0622\u06cc\u0646\u062f\u0647\u0627\u06cc Stateful:<\/strong><br \/>\nRewire \u0628\u0627 \u0641\u0631\u0622\u06cc\u0646\u062f\u0647\u0627\u06cc \u062d\u0627\u0644\u062a \u062f\u0627\u0631 \u0628\u0647 \u062e\u0648\u0628\u06cc \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f\u060c \u0645\u0634\u0631\u0648\u0637 \u0628\u0631 \u0627\u06cc\u0646\u06a9\u0647 \u0627\u06cc\u0646 \u0641\u0631\u0622\u06cc\u0646\u062f\u0647\u0627 \u067e\u0633 \u0627\u0632 \u0633\u06cc\u0645 \u06a9\u0634\u06cc \u0645\u062c\u062f\u062f \u0645\u0627\u0698\u0648\u0644 \u0622\u0646\u0647\u0627 \u0634\u0631\u0648\u0639 \u0634\u0648\u0646\u062f.  \u0628\u0631\u0627\u06cc \u0641\u0631\u0622\u06cc\u0646\u062f\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0627\u0632 \u0642\u0628\u0644 \u0634\u0631\u0648\u0639 \u0634\u062f\u0647 \u0627\u0646\u062f (\u0645\u0627\u0646\u0646\u062f \u06a9\u0646\u062a\u0631\u0644\u0631\u0647\u0627\u06cc Phoenix)\u060c Rewire \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0645\u0648\u062b\u0631 \u0646\u0628\u0627\u0634\u062f \u0632\u06cc\u0631\u0627 \u0633\u06cc\u0645 \u06a9\u0634\u06cc \u0645\u062c\u062f\u062f \u062f\u06cc\u06af\u0631 \u0646\u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0627\u0639\u0645\u0627\u0644 \u0634\u0648\u062f.  \u062a\u0648\u0635\u06cc\u0647 \u0645\u06cc \u0634\u0648\u062f \u0627\u0632 Rewire \u062f\u0631 \u062f\u0631\u062c\u0647 \u0627\u0648\u0644 \u0628\u0631\u0627\u06cc \u062a\u0633\u062a \u0647\u0627\u06cc \u0648\u0627\u062d\u062f\u06cc \u06a9\u0647 \u0627\u06cc\u0646 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0627\u0639\u0645\u0627\u0644 \u0646\u0645\u06cc \u0634\u0648\u062f\u060c \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/li>\n<li>\n<strong>\u0633\u06cc\u0645 \u06a9\u0634\u06cc \u0645\u062c\u062f\u062f \u0645\u0627\u0698\u0648\u0644 Erlang:<\/strong><br \/>\nRewire \u0646\u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0645\u0627\u0698\u0648\u0644 \u0647\u0627\u06cc Erlang \u0631\u0627 \u062f\u0648\u0628\u0627\u0631\u0647 \u0633\u06cc\u0645 \u06a9\u0634\u06cc \u06a9\u0646\u062f.  \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc \u062f\u0647\u062f \u062a\u0627 \u0645\u0631\u0627\u062c\u0639 \u0645\u0627\u0698\u0648\u0644 Erlang \u062f\u0631 \u0645\u0627\u0698\u0648\u0644 \u0647\u0627\u06cc Elixir \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u0634\u0648\u0646\u062f \u0648 \u0631\u0627\u0647 \u062d\u0644\u06cc \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u062f.<\/li>\n<li>\n<strong>\u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u0627\u0698\u0648\u0644 \u0647\u0627\u06cc \u062a\u0648 \u062f\u0631 \u062a\u0648:<\/strong><br \/>\n\u0633\u06cc\u0645\u200c\u06a9\u0634\u06cc \u0645\u062c\u062f\u062f \u062a\u0646\u0647\u0627 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc\u200c\u0647\u0627 \u0631\u0627 \u062f\u0631 \u0645\u0627\u0698\u0648\u0644 \u0633\u06cc\u0645\u200c\u06a9\u0634\u06cc \u0645\u062c\u062f\u062f \u062e\u0627\u0635 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f.  \u0645\u0627\u0698\u0648\u0644 \u0647\u0627\u06cc \u0627\u0637\u0631\u0627\u0641 \u06cc\u0627 \u062a\u0648 \u062f\u0631 \u062a\u0648 \u0628\u062f\u0648\u0646 \u062a\u0627\u062b\u06cc\u0631 \u0628\u0627\u0642\u06cc \u0645\u06cc \u0645\u0627\u0646\u0646\u062f \u0648 \u0627\u0631\u062c\u0627\u0639 \u0628\u0647 \u0645\u0627\u0698\u0648\u0644 \u0647\u0627\u06cc \u0627\u0635\u0644\u06cc \u0631\u0627 \u062d\u0641\u0638 \u0645\u06cc \u06a9\u0646\u0646\u062f.  \u0628\u0631\u0627\u06cc \u06a9\u0646\u062a\u0631\u0644 \u06a9\u0627\u0645\u0644\u060c \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0644\u0627\u0632\u0645 \u0628\u0627\u0634\u062f \u0627\u06cc\u0646 \u0645\u0627\u0698\u0648\u0644 \u0647\u0627 \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u0633\u06cc\u0645 \u06a9\u0634\u06cc \u06a9\u0646\u06cc\u062f.<\/li>\n<li>\n<strong>\u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc Formatter \u0628\u0631\u0627\u06cc Rewire:<\/strong><br \/>\n\u0628\u0631\u0627\u06cc \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u0627\u0641\u0632\u0648\u062f\u0646 \u067e\u0631\u0627\u0646\u062a\u0632 \u062f\u0631 \u0627\u0637\u0631\u0627\u0641 Rewire\u060c \u0641\u0631\u0645\u062a \u062a\u0631\u06a9\u06cc\u0628\u06cc \u0631\u0627 \u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u06a9\u0646\u06cc\u062f <code>.formatter.exs<\/code> \u0641\u0627\u06cc\u0644 \u0628\u0627 <code>import_deps: [:rewire]<\/code>.  \u0627\u06cc\u0646 \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0646\u062d\u0648 Rewire \u0628\u0647 \u062f\u0631\u0633\u062a\u06cc \u0628\u062f\u0648\u0646 \u067e\u0631\u0627\u0646\u062a\u0632 \u063a\u06cc\u0631 \u0636\u0631\u0648\u0631\u06cc \u0642\u0627\u0644\u0628 \u0628\u0646\u062f\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a.<\/li>\n<\/ul>\n<p>\u0648 \u0628\u0633!<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A8%D8%B3%D8%AA%D9%87_%D8%A8%D9%86%D8%AF%DB%8C\"><\/span>\n<p>  \u0628\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u067e\u0633\u062a \u0628\u0631\u0631\u0633\u06cc \u06a9\u0631\u062f\u0647 \u0627\u06cc\u0645 \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 Rewire \u0648 Mox \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u0628\u0647 \u062a\u0632\u0631\u06cc\u0642 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u062f\u0631 Elixir \u06a9\u0645\u06a9 \u06a9\u0646\u0646\u062f.<\/p>\n<p>\u0627\u0633\u062a\u0641\u0627\u0646 \u0628\u0647\u0646\u06a9\u0647\u060c \u062e\u0627\u0644\u0642 Rewire\u060c \u0628\u0627 \u062a\u0645\u0627\u06cc\u0644 \u0628\u0647 \u06cc\u06a9 \u0631\u0627\u0647 \u062d\u0644 \u0638\u0631\u06cc\u0641 \u062a\u0631 \u0628\u0631\u0627\u06cc \u062a\u0632\u0631\u06cc\u0642 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u062f\u0631 \u0627\u06a9\u0633\u06cc\u0631\u060c \u0628\u0647 \u0648\u06cc\u0698\u0647 \u0628\u0631\u0627\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634 \u0648\u0627\u062d\u062f\u060c \u0627\u0646\u06af\u06cc\u0632\u0647 \u062f\u0627\u0634\u062a.  \u0645\u0646 \u0645\u0639\u062a\u0642\u062f\u0645 \u06a9\u0647 \u0627\u0648 \u0645\u0648\u0641\u0642 \u0634\u062f \u0627\u0628\u0632\u0627\u0631\u06cc \u0639\u0627\u0644\u06cc \u0628\u0631\u0627\u06cc \u062c\u0627\u0645\u0639\u0647 \u0627\u06a9\u0633\u06cc\u0631 \u0641\u0631\u0627\u0647\u0645 \u06a9\u0646\u062f.<\/p>\n<p>\u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u06af\u0641\u062a\u0647 \u0634\u062f\u060c Rewire \u06cc\u06a9 \u06af\u0644\u0648\u0644\u0647 \u0646\u0642\u0631\u0647 \u0627\u06cc \u0646\u06cc\u0633\u062a \u0648 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0627\u0628\u0632\u0627\u0631 \u0645\u0646\u0627\u0633\u0628\u06cc \u0628\u0631\u0627\u06cc \u0647\u0631 \u067e\u0631\u0648\u0698\u0647 \u0627\u06cc \u0646\u0628\u0627\u0634\u062f.  \u0627\u0631\u0632\u06cc\u0627\u0628\u06cc Rewire \u062f\u0631 \u06a9\u0646\u0627\u0631 \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f Meck \u0648 \u062a\u0635\u0645\u06cc\u0645 \u06af\u06cc\u0631\u06cc \u0628\u0631 \u0627\u0633\u0627\u0633 \u067e\u0631\u0648\u0698\u0647 \u0648 \u0646\u06cc\u0627\u0632\u0647\u0627\u06cc \u062a\u06cc\u0645 \u0645\u0647\u0645 \u0627\u0633\u062a.<\/p>\n<p>\u06a9\u062f \u0646\u0648\u06cc\u0633\u06cc \u0645\u0628\u0627\u0631\u06a9!<\/p>\n<p><strong>PS \u0627\u06af\u0631 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u062f \u067e\u0633\u062a\u200c\u0647\u0627\u06cc \u0627\u06a9\u0633\u06cc\u0631 \u06a9\u06cc\u0645\u06cc\u0627\u06af\u0631\u06cc \u0631\u0627 \u0628\u0647 \u0645\u062d\u0636 \u0627\u0646\u062a\u0634\u0627\u0631 \u0622\u0646\u200c\u0647\u0627 \u0628\u062e\u0648\u0627\u0646\u06cc\u062f\u060c \u062f\u0631 \u062e\u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u06a9\u0633\u06cc\u0631 \u06a9\u06cc\u0645\u06cc\u0627\u06af\u0631\u06cc \u0645\u0634\u062a\u0631\u06a9 \u0634\u0648\u06cc\u062f \u0648 \u0647\u06cc\u0686 \u067e\u0633\u062a\u06cc \u0631\u0627 \u0627\u0632 \u062f\u0633\u062a \u0646\u062f\u0647\u06cc\u062f!<\/strong><\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u062f\u0631 \u0622\u062e\u0631\u06cc\u0646 \u067e\u0633\u062a \u062e\u0648\u062f\u060c \u0628\u0631\u0631\u0633\u06cc \u06a9\u0631\u062f\u06cc\u0645 \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 Dependency Injection (DI) \u06cc\u06a9 \u0627\u0644\u06af\u0648\u06cc \u0637\u0631\u0627\u062d\u06cc \u0642\u062f\u0631\u062a\u0645\u0646\u062f \u0627\u0633\u062a \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u062a\u0633\u062a \u0647\u0627\u06cc ExUnit \u0645\u0627 \u0631\u0627 \u0628\u0647\u0628\u0648\u062f \u0628\u062e\u0634\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647\u060c \u0628\u0627 \u062a\u0645\u0631\u06a9\u0632 \u0628\u0631 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 Rewire \u0628\u0631\u0627\u06cc \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc Elixir\u060c \u0639\u0645\u06cc\u0642\u200c\u062a\u0631 \u0628\u0647 \u0645\u0648\u0636\u0648\u0639 DI \u062f\u0631 \u0627\u06a9\u0633\u06cc\u0631 \u062e\u0648\u0627\u0647\u06cc\u0645 \u067e\u0631\u062f\u0627\u062e\u062a. \u0645\u0627 \u0645\u0641\u0627\u0647\u06cc\u0645 \u0627\u0635\u0644\u06cc Rewire\u060c \u0646\u062d\u0648\u0647 \u0634\u0631\u0648\u0639 \u06a9\u0627\u0631 \u0628\u0627 \u0622\u0646 \u0648 &hellip;<\/p>\n","protected":false},"author":2,"featured_media":67468,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"https:\/\/media.dev.to\/cdn-cgi\/image\/width=1000,height=500,fit=cover,gravity=auto,format=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2nk5ff911ykuxp5exhhd.jpg","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-67467","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/67467","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=67467"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/67467\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/67468"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=67467"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=67467"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=67467"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}