{"id":18734,"date":"2023-04-21T03:47:39","date_gmt":"2023-04-21T00:17:39","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/to-mock-or-not-to-mock-that-is-the-question-4458\/"},"modified":"2023-04-21T03:47:39","modified_gmt":"2023-04-21T00:17:39","slug":"to-mock-or-not-to-mock-that-is-the-question-4458","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/to-mock-or-not-to-mock-that-is-the-question-4458\/","title":{"rendered":"\u0645\u0633\u062e\u0631\u0647 \u06a9\u0631\u062f\u0646 \u06cc\u0627 \u0645\u0633\u062e\u0631\u0647 \u0646\u06a9\u0631\u062f\u0646 \u0645\u0633\u0626\u0644\u0647 \u0627\u06cc\u0646 \u0627\u0633\u062a"},"content":{"rendered":"<div data-article-id=\"1442531\" id=\"article-body\">\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_84 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=\"Toggle Table of Content\"><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\/to-mock-or-not-to-mock-that-is-the-question-4458\/#TLTR\" >TLTR<\/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\/to-mock-or-not-to-mock-that-is-the-question-4458\/#%D8%A8%DB%8C%D8%B4%D8%AA%D8%B1\" >\u0628\u06cc\u0634\u062a\u0631<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/to-mock-or-not-to-mock-that-is-the-question-4458\/#%DA%A9%D8%A7%D8%B3%D8%AA%DB%8C_%D9%87%D8%A7%DB%8C_%D8%AA%D9%85%D8%B3%D8%AE%D8%B1\" >\u06a9\u0627\u0633\u062a\u06cc \u0647\u0627\u06cc \u062a\u0645\u0633\u062e\u0631<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/to-mock-or-not-to-mock-that-is-the-question-4458\/#1_%D8%B2%D9%85%D8%A7%D9%86_%D8%A7%D8%AC%D8%B1%D8%A7_%D8%A8%D9%87_%D8%AC%D8%A7%DB%8C_%D8%A8%D8%A7%D8%B2%D8%AE%D9%88%D8%B1%D8%AF_%D8%B2%D9%85%D8%A7%D9%86_%DA%A9%D8%A7%D9%85%D9%BE%D8%A7%DB%8C%D9%84_%D8%AF%D8%B1_%D9%85%D9%88%D8%B1%D8%AF_%D8%AA%D8%BA%DB%8C%DB%8C%D8%B1%D8%A7%D8%AA\" >1. \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 \u0628\u0647 \u062c\u0627\u06cc \u0628\u0627\u0632\u062e\u0648\u0631\u062f \u0632\u0645\u0627\u0646 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u062f\u0631 \u0645\u0648\u0631\u062f \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/nabfollower.com\/blog\/to-mock-or-not-to-mock-that-is-the-question-4458\/#2_%D8%A7%D8%AA%D8%B5%D8%A7%D9%84_%D9%85%D8%AD%DA%A9%D9%85_%D8%A8%D9%87_%D9%82%D8%B1%D8%A7%D8%B1%D8%AF%D8%A7%D8%AF%D9%87%D8%A7\" >2. \u0627\u062a\u0635\u0627\u0644 \u0645\u062d\u06a9\u0645 \u0628\u0647 \u0642\u0631\u0627\u0631\u062f\u0627\u062f\u0647\u0627<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/nabfollower.com\/blog\/to-mock-or-not-to-mock-that-is-the-question-4458\/#3_%D8%B3%DB%8C%D8%B3%D8%AA%D9%85_%DA%A9%D9%88%D8%AA%D8%A7%D9%87_%D8%AA%D8%AD%D8%AA_%D8%A2%D8%B2%D9%85%D8%A7%DB%8C%D8%B4\" >3. \u0633\u06cc\u0633\u062a\u0645 \u06a9\u0648\u062a\u0627\u0647 \u062a\u062d\u062a \u0622\u0632\u0645\u0627\u06cc\u0634<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/nabfollower.com\/blog\/to-mock-or-not-to-mock-that-is-the-question-4458\/#4_%D8%B1%D8%A7%D9%87_%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C_%D8%B7%D9%88%D9%84%D8%A7%D9%86%DB%8C_%D8%A8%D8%A7%D8%AF_%D8%AF%D8%B1_%D9%87%D8%B1_%D8%A2%D8%B2%D9%85%D9%88%D9%86\" >4. \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0637\u0648\u0644\u0627\u0646\u06cc \u0628\u0627\u062f \u062f\u0631 \u0647\u0631 \u0622\u0632\u0645\u0648\u0646<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/nabfollower.com\/blog\/to-mock-or-not-to-mock-that-is-the-question-4458\/#5_%D8%B4%D9%85%D8%A7_%D9%86%D9%85%DB%8C_%D8%AA%D9%88%D8%A7%D9%86%DB%8C%D8%AF_%D9%87%D8%B1_%D8%B1%D9%88%D8%B4%DB%8C_%D8%B1%D8%A7_%D9%85%D8%B3%D8%AE%D8%B1%D9%87_%DA%A9%D9%86%DB%8C%D8%AF\" >5. \u0634\u0645\u0627 \u0646\u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0647\u0631 \u0631\u0648\u0634\u06cc \u0631\u0627 \u0645\u0633\u062e\u0631\u0647 \u06a9\u0646\u06cc\u062f<\/a><\/li><\/ul><\/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\/to-mock-or-not-to-mock-that-is-the-question-4458\/#%D8%A8%D9%87_%D8%AC%D8%A7%DB%8C_%D8%AA%D9%85%D8%B3%D8%AE%D8%B1_%DA%86%D9%87_%DA%A9%D9%86%D9%85%D8%9F\" >\u0628\u0647 \u062c\u0627\u06cc \u062a\u0645\u0633\u062e\u0631 \u0686\u0647 \u06a9\u0646\u0645\u061f<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/nabfollower.com\/blog\/to-mock-or-not-to-mock-that-is-the-question-4458\/#1_%D8%A2%D8%B2%D9%85%D9%88%D9%86_%D9%87%D8%A7%DB%8C_%DB%8C%DA%A9%D9%BE%D8%A7%D8%B1%DA%86%D9%87_%D8%B3%D8%A7%D8%B2%DB%8C\" >1. \u0622\u0632\u0645\u0648\u0646 \u0647\u0627\u06cc \u06cc\u06a9\u067e\u0627\u0631\u0686\u0647 \u0633\u0627\u0632\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/nabfollower.com\/blog\/to-mock-or-not-to-mock-that-is-the-question-4458\/#2_%D8%A2%D8%B2%D9%85%D9%88%D9%86_%D9%87%D8%A7%DB%8C_%D9%BE%D8%A7%DB%8C%D8%A7%D9%86_%D8%A8%D9%87_%D8%A7%D9%86%D8%AA%D9%87%D8%A7\" >2. \u0622\u0632\u0645\u0648\u0646 \u0647\u0627\u06cc \u067e\u0627\u06cc\u0627\u0646 \u0628\u0647 \u0627\u0646\u062a\u0647\u0627<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/nabfollower.com\/blog\/to-mock-or-not-to-mock-that-is-the-question-4458\/#3_%D8%AE%D8%B1%D8%AF\" >3. \u062e\u0631\u062f<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/nabfollower.com\/blog\/to-mock-or-not-to-mock-that-is-the-question-4458\/#%D8%AE%D9%84%D8%A7%D8%B5%D9%87\" >\u062e\u0644\u0627\u0635\u0647<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/nabfollower.com\/blog\/to-mock-or-not-to-mock-that-is-the-question-4458\/#%D9%85%D9%86%D8%A7%D8%A8%D8%B9\" >\u0645\u0646\u0627\u0628\u0639<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"TLTR\"><\/span>\n<p>  TLTR<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u062a\u0645\u0633\u062e\u0631 \u0627\u063a\u0644\u0628 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0627\u0646\u062a\u062e\u0627\u0628 \u067e\u06cc\u0634 \u0641\u0631\u0636 \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u0646\u0648\u0634\u062a\u0646 \u062a\u0633\u062a \u0647\u0627 \u062f\u06cc\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f.  \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u067e\u06cc\u0686\u06cc\u062f\u06af\u06cc \u063a\u06cc\u0631 \u0636\u0631\u0648\u0631\u06cc \u0631\u0627 \u0628\u0647 \u0633\u06cc\u0633\u062a\u0645 \u0634\u0645\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u062f.  \u0631\u0648\u0634 \u0647\u0627\u06cc \u062f\u06cc\u06af\u0631\u06cc \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627 \u062f\u0631 \u062a\u0633\u062a \u0647\u0627 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A8%DB%8C%D8%B4%D8%AA%D8%B1\"><\/span>\n<p>  \u0628\u06cc\u0634\u062a\u0631<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u062a\u0645\u0633\u062e\u0631 \u0686\u06cc\u0633\u062a\u061f<\/p>\n<blockquote>\n<p>\u062a\u0645\u0633\u062e\u0631 &#8211; \u0627\u06cc\u062c\u0627\u062f \u0627\u0634\u06cc\u0627\u06cc\u06cc \u06a9\u0647 \u0631\u0641\u062a\u0627\u0631 \u0627\u0634\u06cc\u0627\u0621 \u0648\u0627\u0642\u0639\u06cc \u0631\u0627 \u0634\u0628\u06cc\u0647 \u0633\u0627\u0632\u06cc \u0645\u06cc \u06a9\u0646\u0646\u062f.<\/p>\n<\/blockquote>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0628\u0647 \u0637\u0648\u0631 \u062e\u0644\u0627\u0635\u0647 \u0686\u06af\u0648\u0646\u0647 \u062f\u0631 \u0633\u06cc \u0634\u0627\u0631\u067e \u062a\u0645\u0633\u062e\u0631 \u0622\u0645\u06cc\u0632 \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0631\u0633\u062f (<code>JustMock<\/code> \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647):<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code><span class=\"c1\">\/\/ Instantiate a new mock<\/span>\n<span class=\"kt\">var<\/span> <span class=\"n\">mockContactRepository<\/span> <span class=\"p\">=<\/span> <span class=\"n\">Mock<\/span><span class=\"p\">.<\/span><span class=\"n\">Create<\/span><span class=\"p\">&lt;<\/span><span class=\"n\">IContactRepository<\/span><span class=\"p\">&gt;();<\/span>\n\n<span class=\"c1\">\/\/ Set up the mock and it's return value <\/span>\n<span class=\"n\">Mock<\/span><span class=\"p\">.<\/span><span class=\"nf\">Arrange<\/span><span class=\"p\">(()<\/span> <span class=\"p\">=&gt;<\/span> <span class=\"n\">mockContactRepository<\/span><span class=\"p\">.<\/span><span class=\"nf\">GetContacts<\/span><span class=\"p\">())<\/span>\n  <span class=\"p\">.<\/span><span class=\"nf\">Returns<\/span><span class=\"p\">(<\/span><span class=\"k\">new<\/span> <span class=\"n\">List<\/span><span class=\"p\">&lt;<\/span><span class=\"n\">Contact<\/span><span class=\"p\">&gt;<\/span>\n  <span class=\"p\">{<\/span>\n      <span class=\"k\">new<\/span> <span class=\"n\">Contact<\/span> <span class=\"p\">{<\/span> <span class=\"n\">ContactId<\/span> <span class=\"p\">=<\/span> <span class=\"m\">1<\/span> <span class=\"p\">},<\/span> <span class=\"k\">new<\/span> <span class=\"n\">Contact<\/span> <span class=\"p\">{<\/span> <span class=\"n\">ContactId<\/span> <span class=\"p\">=<\/span> <span class=\"m\">2<\/span> <span class=\"p\">}<\/span>\n  <span class=\"p\">});<\/span>\n\n<span class=\"c1\">\/\/ Pass mock as a dependency<\/span>\n<span class=\"kt\">var<\/span> <span class=\"n\">contactManager<\/span> <span class=\"p\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nf\">ContactManager<\/span><span class=\"p\">(<\/span><span class=\"n\">mockContactRepository<\/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>\u0627\u06af\u0631\u0686\u0647 \u0628\u0633\u06cc\u0627\u0631 \u0645\u0641\u06cc\u062f \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0631\u0633\u062f\u060c \u0627\u0645\u0627 \u0628\u0627\u06cc\u062f \u0628\u0627 \u06a9\u0645\u06cc \u0646\u0645\u06a9 \u0645\u0635\u0631\u0641 \u0634\u0648\u062f.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%DA%A9%D8%A7%D8%B3%D8%AA%DB%8C_%D9%87%D8%A7%DB%8C_%D8%AA%D9%85%D8%B3%D8%AE%D8%B1\"><\/span>\n<p>  \u06a9\u0627\u0633\u062a\u06cc \u0647\u0627\u06cc \u062a\u0645\u0633\u062e\u0631<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<h4><span class=\"ez-toc-section\" id=\"1_%D8%B2%D9%85%D8%A7%D9%86_%D8%A7%D8%AC%D8%B1%D8%A7_%D8%A8%D9%87_%D8%AC%D8%A7%DB%8C_%D8%A8%D8%A7%D8%B2%D8%AE%D9%88%D8%B1%D8%AF_%D8%B2%D9%85%D8%A7%D9%86_%DA%A9%D8%A7%D9%85%D9%BE%D8%A7%DB%8C%D9%84_%D8%AF%D8%B1_%D9%85%D9%88%D8%B1%D8%AF_%D8%AA%D8%BA%DB%8C%DB%8C%D8%B1%D8%A7%D8%AA\"><\/span>\n<p>  <strong>1. \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 \u0628\u0647 \u062c\u0627\u06cc \u0628\u0627\u0632\u062e\u0648\u0631\u062f \u0632\u0645\u0627\u0646 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u062f\u0631 \u0645\u0648\u0631\u062f \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0627\u06af\u0631 \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0631\u0627 \u062a\u0635\u0648\u0631 \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u062f\u0627\u0631\u062f <code>Setup()<\/code> \u0627\u0645\u0627 \u0645\u0642\u062f\u0627\u0631 \u0628\u0627\u0632\u06af\u0634\u062a\u06cc \u0646\u062f\u0627\u0631\u062f.  \u0648\u0642\u062a\u06cc \u0645\u0642\u062f\u0627\u0631 \u0628\u0627\u0632\u06af\u0634\u062a\u06cc \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645\u060c \u0645\u062f\u0644 \u0633\u0627\u0632\u06cc \u067e\u06cc\u0634\u0646\u0647\u0627\u062f \u0646\u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0646\u0648\u0639 \u0628\u0627\u0632\u06af\u0634\u062a\u06cc \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f.  \u0645\u0627 \u0641\u0642\u0637 \u0647\u0646\u06af\u0627\u0645 \u0627\u062c\u0631\u0627\u06cc \u0622\u0632\u0645\u0648\u0646 \u0645\u062a\u0648\u062c\u0647 \u0622\u0646 \u0645\u06cc \u0634\u0648\u06cc\u0645.<br \/>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0645\u062b\u0627\u0644\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u0646\u0642\u0635 \u062f\u0631 \u0633\u06cc \u0634\u0627\u0631\u067e \u0622\u0645\u062f\u0647 \u0627\u0633\u062a (<code>Moq<\/code> \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647)<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code><span class=\"k\">public<\/span> <span class=\"k\">class<\/span> <span class=\"nc\">CarsControllerTests<\/span>\n<span class=\"p\">{<\/span>\n\n    <span class=\"p\">[<\/span><span class=\"n\">Fact<\/span><span class=\"p\">]<\/span>\n    <span class=\"k\">public<\/span> <span class=\"k\">async<\/span> <span class=\"k\">void<\/span> <span class=\"nf\">testCreateCar<\/span><span class=\"p\">()<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"kt\">var<\/span> <span class=\"n\">repositoryMock<\/span> <span class=\"p\">=<\/span> <span class=\"k\">new<\/span> <span class=\"n\">Mock<\/span><span class=\"p\">&lt;<\/span><span class=\"n\">ICarRepository<\/span><span class=\"p\">&gt;();<\/span>\n\n        <span class=\"c1\">\/\/ No return value set<\/span>\n        <span class=\"n\">repositoryMock<\/span><span class=\"p\">.<\/span><span class=\"nf\">Setup<\/span><span class=\"p\">(<\/span><span class=\"n\">r<\/span> <span class=\"p\">=&gt;<\/span> <span class=\"n\">r<\/span><span class=\"p\">.<\/span><span class=\"nf\">Create<\/span><span class=\"p\">(<\/span><span class=\"n\">car<\/span><span class=\"p\">));<\/span>\n\n        <span class=\"kt\">var<\/span> <span class=\"n\">carsController<\/span> <span class=\"p\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nf\">CarsController<\/span><span class=\"p\">(<\/span><span class=\"n\">repositoryMock<\/span><span class=\"p\">.<\/span><span class=\"n\">Object<\/span><span class=\"p\">);<\/span>\n        <span class=\"kt\">var<\/span> <span class=\"n\">car<\/span> <span class=\"p\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nf\">Car<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span> <span class=\"n\">Name<\/span> <span class=\"p\">=<\/span> <span class=\"s\">\"BMW\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">Available<\/span> <span class=\"p\">=<\/span> <span class=\"k\">true<\/span> <span class=\"p\">};<\/span>\n        <span class=\"kt\">var<\/span> <span class=\"n\">result<\/span> <span class=\"p\">=<\/span> <span class=\"k\">await<\/span> <span class=\"n\">controller<\/span><span class=\"p\">.<\/span><span class=\"nf\">Create<\/span><span class=\"p\">(<\/span><span class=\"n\">car<\/span><span class=\"p\">);<\/span>\n\n        <span class=\"c1\">\/\/ Use return value on result<\/span>\n        <span class=\"n\">Assert<\/span><span class=\"p\">.<\/span><span class=\"nf\">Equal<\/span><span class=\"p\">(<\/span><span class=\"s\">\"BMW\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">result<\/span><span class=\"p\">.<\/span><span class=\"n\">Name<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n<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>\u0622\u0632\u0645\u0648\u0646 \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a \u0627\u0645\u0627 \u0622\u0632\u0645\u0648\u0646 \u0645\u0648\u0641\u0642 \u0646\u062e\u0648\u0627\u0647\u062f \u0634\u062f.  \u062f\u0644\u06cc\u0644 \u0622\u0646 \u0639\u062f\u0645 \u062a\u0646\u0638\u06cc\u0645 \u0645\u0642\u062f\u0627\u0631 \u0628\u0627\u0632\u06af\u0634\u062a\u06cc \u0627\u0633\u062a.  \u06a9\u0646\u062a\u0631\u0644 \u06a9\u0646\u0646\u062f\u0647 \u0628\u0647 \u0645\u0642\u062f\u0627\u0631 \u0628\u0631\u06af\u0634\u062a\u06cc \u0627\u0632 \u0645\u062e\u0632\u0646 \u0645\u062a\u06a9\u06cc \u0627\u0633\u062a.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code><span class=\"o\">&gt;&gt;<\/span> dotnet <span class=\"nb\">test\n\n<\/span>Starting <span class=\"nb\">test <\/span>execution, please wait...\nA total of 1 <span class=\"nb\">test <\/span>files matched the specified pattern.\n<span class=\"o\">[<\/span>xUnit.net 00:00:01.0309627]     Cars.Tests.CarsControllerTests.testCreateCar <span class=\"o\">[<\/span>FAIL]\n  Failed Cars.Tests.CarsControllerTests.testCreateCar <span class=\"o\">[<\/span>94 ms]\n  Error Message:\n   System.NullReferenceException : Object reference not <span class=\"nb\">set <\/span>to an instance of an object.\n  Stack Trace:\n     at Cars.CarsController.Create<span class=\"o\">(<\/span>Car car<span class=\"o\">)<\/span> <span class=\"k\">in<\/span> \/Users\/kondrashov\/Projects\/unit-testing-mocking\/src\/Cars\/Controllers\/CarController.cs:line 20\n   at Cars.Tests.CarsControllerTests.testCreateCar<span class=\"o\">()<\/span> <span class=\"k\">in<\/span> \/Users\/kondrashov\/Projects\/unit-testing-mocking\/test\/Cars.Tests\/CarsControllerTests.cs:line 20\n   at System.Threading.Tasks.Task.&lt;<span class=\"o\">&gt;<\/span>c.&lt;ThrowAsync&gt;b__128_0<span class=\"o\">(<\/span>Object state<span class=\"o\">)<\/span>\nFailed!  - Failed:     1, Passed:     0, Skipped:     0, Total:     1, Duration: &lt; 1 ms - Cars.Tests.dll <span class=\"o\">(<\/span>net7.0<span class=\"o\">)<\/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 \u06cc\u06a9 \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>null reference<\/code> \u0627\u0633\u062a\u062b\u0646\u0627 \u062f\u0631 \u0628\u0627\u0632\u06af\u0634\u062a <code>car.Id.ToString()<\/code> \u0628\u0631\u0627\u06cc \u062e\u0648\u0634\u062d\u0627\u0644 \u06a9\u0631\u062f\u0646 \u062a\u0633\u062a \u0628\u0627\u06cc\u062f \u0627\u0632 \u0622\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645 <code>ReturnsAsync()<\/code> \u0631\u0648\u0634\u06cc \u06a9\u0647 \u0631\u0648\u06cc \u0645\u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code><span class=\"c1\">\/\/ Set return value<\/span>\n<span class=\"n\">repositoryMock<\/span><span class=\"p\">.<\/span><span class=\"nf\">Setup<\/span><span class=\"p\">(<\/span><span class=\"n\">r<\/span> <span class=\"p\">=&gt;<\/span> <span class=\"n\">r<\/span><span class=\"p\">.<\/span><span class=\"nf\">Create<\/span><span class=\"p\">(<\/span><span class=\"n\">car<\/span><span class=\"p\">))<\/span>\n    <span class=\"p\">.<\/span><span class=\"nf\">ReturnsAsync<\/span><span class=\"p\">(<\/span><span class=\"k\">new<\/span> <span class=\"n\">Car<\/span> <span class=\"p\">{<\/span> <span class=\"n\">Id<\/span> <span class=\"p\">=<\/span> <span class=\"s\">\"1\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">Name<\/span> <span class=\"p\">=<\/span> <span class=\"s\">\"BMW\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">Available<\/span> <span class=\"p\">=<\/span> <span class=\"k\">true<\/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>\u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0631\u0633\u062f \u062a\u063a\u06cc\u06cc\u0631 \u0645\u0627\u06a9 \u0628\u0627\u0644\u0627 \u0622\u0633\u0627\u0646 \u0648 \u0633\u0627\u062f\u0647 \u0628\u0627\u0634\u062f.  \u0627\u0645\u0627 \u0631\u0648\u0634 \u0647\u0627\u06cc \u067e\u06cc\u0686\u06cc\u062f\u0647 \u062a\u0631 \u06a9\u0645\u062a\u0631 \u067e\u06cc\u0634 \u067e\u0627 \u0627\u0641\u062a\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u0646\u062f.  \u0627\u0631\u0632\u0634\u06cc \u06a9\u0647 \u0627\u06cc\u0646 \u062a\u0633\u062a \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u062f \u0628\u0627 \u062a\u0645\u0627\u0645 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0622\u0646 \u0635\u0631\u0641 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u06a9\u0645\u062a\u0631 \u0645\u06cc \u0634\u0648\u062f.<\/p>\n<p>\u0645\u0627 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645 \u0628\u062f\u0627\u0646\u06cc\u0645 \u06a9\u0647 \u0686\u0647 \u0632\u0645\u0627\u0646\u06cc \u0686\u06cc\u0632\u06cc \u062f\u0631 \u0632\u0645\u0627\u0646 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u062e\u0631\u0627\u0628 \u0634\u062f\u060c \u0628\u0647 \u062c\u0627\u06cc \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"2_%D8%A7%D8%AA%D8%B5%D8%A7%D9%84_%D9%85%D8%AD%DA%A9%D9%85_%D8%A8%D9%87_%D9%82%D8%B1%D8%A7%D8%B1%D8%AF%D8%A7%D8%AF%D9%87%D8%A7\"><\/span>\n<p>  2. \u0627\u062a\u0635\u0627\u0644 \u0645\u062d\u06a9\u0645 \u0628\u0647 \u0642\u0631\u0627\u0631\u062f\u0627\u062f\u0647\u0627<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u062a\u0645\u0633\u062e\u0631 \u0630\u0627\u062a\u0627\u064b \u0628\u0627 \u0642\u0631\u0627\u0631\u062f\u0627\u062f\u0647\u0627 \u0647\u0645\u0631\u0627\u0647 \u0627\u0633\u062a.  \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0647\u0631 \u0628\u0627\u0632\u0633\u0627\u0632\u06cc \u0631\u0627 \u0633\u062e\u062a\u200c\u062a\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u0632\u06cc\u0631\u0627 \u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u0647\u0645\u0647 \u0645\u062f\u0644\u200c\u0647\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc \u0631\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0647\u06cc\u062f.<\/p>\n<p>\u062f\u0631 \u0632\u06cc\u0631 \u0645\u0646 \u062d\u062f\u0648\u062f 6 \u0633\u0631\u0648\u06cc\u0633 \u0645\u062e\u062a\u0644\u0641 \u062f\u0631 \u062a\u0645\u0633\u062e\u0631 \u062f\u0627\u0631\u0645.  \u0628\u0627\u0632\u0633\u0627\u0632\u06cc \u0642\u0631\u0627\u0631\u062f\u0627\u062f\u0647\u0627\u06cc \u062e\u062f\u0645\u0627\u062a \u0632\u06cc\u0631 \u0645\u0646\u062c\u0631 \u0628\u0647 \u0634\u06a9\u0633\u062a\u0646 \u062a\u0645\u0627\u0645 \u0627\u06cc\u0646 \u0645\u0633\u062e\u0631\u0647\u200c\u0647\u0627 \u0645\u06cc\u200c\u0634\u0648\u062f.  \u0634\u06a9\u0633\u062a\u06af\u06cc \u0647\u0627 \u0631\u0627 \u062f\u0631 \u062a\u0639\u062f\u0627\u062f \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u0645\u0627\u06a9 \u0647\u0627 \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc \u06a9\u0646\u06cc\u062f \u0636\u0631\u0628 \u06a9\u0646\u06cc\u062f.<\/p>\n<p><\/p>\n<h4><span class=\"ez-toc-section\" id=\"3_%D8%B3%DB%8C%D8%B3%D8%AA%D9%85_%DA%A9%D9%88%D8%AA%D8%A7%D9%87_%D8%AA%D8%AD%D8%AA_%D8%A2%D8%B2%D9%85%D8%A7%DB%8C%D8%B4\"><\/span>\n<p>  3. \u0633\u06cc\u0633\u062a\u0645 \u06a9\u0648\u062a\u0627\u0647 \u062a\u062d\u062a \u0622\u0632\u0645\u0627\u06cc\u0634<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u06cc\u06a9 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0631\u0627 \u0645\u0633\u062e\u0631\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645\u060c \u0633\u06cc\u0633\u062a\u0645 \u062a\u062d\u062a \u0622\u0632\u0645\u0627\u06cc\u0634 (SUT) \u06a9\u0648\u062a\u0627\u0647\u062a\u0631 \u0627\u0633\u062a:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/04\/1682036259_909_\u0645\u0633\u062e\u0631\u0647-\u06a9\u0631\u062f\u0646-\u06cc\u0627-\u0645\u0633\u062e\u0631\u0647-\u0646\u06a9\u0631\u062f\u0646-\u0645\u0633\u0626\u0644\u0647-\u0627\u06cc\u0646-\u0627\u0633\u062a.jpg\" alt=\"\u0633\u06cc\u0633\u062a\u0645 \u062f\u0631 \u062d\u0627\u0644 \u062a\u0633\u062a \u062f\u0631 \u062a\u0633\u062a \u0647\u0627\u06cc \u0648\u0627\u062d\u062f\" loading=\"lazy\" width=\"800\" height=\"249\" title=\"\"><\/p>\n<p>\u06cc\u06a9 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u062e\u0648\u0628 \u0628\u0631\u0627\u06cc \u0686\u0646\u06cc\u0646 \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc\u060c \u06cc\u06a9 \u062a\u0633\u062a \u06cc\u06a9\u067e\u0627\u0631\u0686\u0647 \u0633\u0627\u0632\u06cc \u0628\u0627 SUT \u0637\u0648\u0644\u0627\u0646\u06cc \u062a\u0631 \u0627\u0633\u062a:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/04\/1682036259_14_\u0645\u0633\u062e\u0631\u0647-\u06a9\u0631\u062f\u0646-\u06cc\u0627-\u0645\u0633\u062e\u0631\u0647-\u0646\u06a9\u0631\u062f\u0646-\u0645\u0633\u0626\u0644\u0647-\u0627\u06cc\u0646-\u0627\u0633\u062a.jpg\" alt=\"System Under Test \u062f\u0631 \u062a\u0633\u062a \u0647\u0627\u06cc \u06cc\u06a9\u067e\u0627\u0631\u0686\u0647 \u0633\u0627\u0632\u06cc\" loading=\"lazy\" width=\"800\" height=\"210\" title=\"\"><\/p>\n<h4><span class=\"ez-toc-section\" id=\"4_%D8%B1%D8%A7%D9%87_%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C_%D8%B7%D9%88%D9%84%D8%A7%D9%86%DB%8C_%D8%A8%D8%A7%D8%AF_%D8%AF%D8%B1_%D9%87%D8%B1_%D8%A2%D8%B2%D9%85%D9%88%D9%86\"><\/span>\n<p>  4. \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0637\u0648\u0644\u0627\u0646\u06cc \u0628\u0627\u062f \u062f\u0631 \u0647\u0631 \u0622\u0632\u0645\u0648\u0646<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u06cc\u06a9 \u0686\u0627\u0631\u0686\u0648\u0628 \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0628\u0647 \u0634\u0645\u0627 \u0627\u06cc\u0646 \u0627\u0645\u06a9\u0627\u0646 \u0631\u0627 \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u062e\u0648\u062f \u0631\u0627 \u06af\u0631\u0648\u0647 \u0628\u0646\u062f\u06cc \u06a9\u0646\u06cc\u062f.  \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u0647\u0645\u06cc\u0634\u0647 \u0627\u06cc\u0646\u0637\u0648\u0631 \u0646\u06cc\u0633\u062a \u0632\u06cc\u0631\u0627 \u0647\u0631 \u0622\u0632\u0645\u0627\u06cc\u0634 \u0627\u063a\u0644\u0628 \u0628\u0647 \u06cc\u06a9 \u062a\u0646\u0638\u06cc\u0645 \u0627\u062e\u062a\u0635\u0627\u0635\u06cc \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u062f.  \u062f\u0631 \u0632\u06cc\u0631 \u0645\u062b\u0627\u0644\u06cc \u0627\u0632 \u0686\u06af\u0648\u0646\u06af\u06cc \u0646\u06cc\u0627\u0632 \u0628\u0647 \u06a9\u062f \u0628\u0631\u0627\u06cc \u0647\u0631 \u0622\u0632\u0645\u0648\u0646 \u0628\u0631\u0627\u06cc \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc mocking \u0622\u0648\u0631\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code><span class=\"p\">[<\/span><span class=\"n\">TestClass<\/span><span class=\"p\">]<\/span>\n<span class=\"k\">public<\/span> <span class=\"k\">class<\/span> <span class=\"nc\">MyTestClass<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">private<\/span> <span class=\"n\">Mock<\/span><span class=\"p\">&lt;<\/span><span class=\"n\">IMyInterface<\/span><span class=\"p\">&gt;<\/span> <span class=\"n\">_mock<\/span><span class=\"p\">;<\/span>\n\n    <span class=\"p\">[<\/span><span class=\"n\">TestInitialize<\/span><span class=\"p\">]<\/span>\n    <span class=\"k\">public<\/span> <span class=\"k\">void<\/span> <span class=\"nf\">Setup<\/span><span class=\"p\">()<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">_mock<\/span> <span class=\"p\">=<\/span> <span class=\"k\">new<\/span> <span class=\"n\">Mock<\/span><span class=\"p\">&lt;<\/span><span class=\"n\">IMyInterface<\/span><span class=\"p\">&gt;();<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"p\">[<\/span><span class=\"n\">TestMethod<\/span><span class=\"p\">]<\/span>\n    <span class=\"k\">public<\/span> <span class=\"k\">void<\/span> <span class=\"nf\">Test1<\/span><span class=\"p\">()<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">_mock<\/span><span class=\"p\">.<\/span><span class=\"nf\">Setup<\/span><span class=\"p\">(<\/span><span class=\"n\">m<\/span> <span class=\"p\">=&gt;<\/span> <span class=\"n\">m<\/span><span class=\"p\">.<\/span><span class=\"nf\">MyMethod<\/span><span class=\"p\">()).<\/span><span class=\"nf\">Returns<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Hello\"<\/span><span class=\"p\">);<\/span>\n        <span class=\"kt\">var<\/span> <span class=\"n\">result<\/span> <span class=\"p\">=<\/span> <span class=\"n\">_mock<\/span><span class=\"p\">.<\/span><span class=\"n\">Object<\/span><span class=\"p\">.<\/span><span class=\"nf\">MyMethod<\/span><span class=\"p\">();<\/span>\n        <span class=\"n\">Assert<\/span><span class=\"p\">.<\/span><span class=\"nf\">AreEqual<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Hello\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">result<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"p\">[<\/span><span class=\"n\">TestMethod<\/span><span class=\"p\">]<\/span>\n    <span class=\"k\">public<\/span> <span class=\"k\">void<\/span> <span class=\"nf\">Test2<\/span><span class=\"p\">()<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">_mock<\/span><span class=\"p\">.<\/span><span class=\"nf\">Setup<\/span><span class=\"p\">(<\/span><span class=\"n\">m<\/span> <span class=\"p\">=&gt;<\/span> <span class=\"n\">m<\/span><span class=\"p\">.<\/span><span class=\"nf\">MyMethod<\/span><span class=\"p\">()).<\/span><span class=\"nf\">Returns<\/span><span class=\"p\">(<\/span><span class=\"s\">\"World\"<\/span><span class=\"p\">);<\/span>\n        <span class=\"n\">_mock<\/span><span class=\"p\">.<\/span><span class=\"nf\">Setup<\/span><span class=\"p\">(<\/span><span class=\"n\">m<\/span> <span class=\"p\">=&gt;<\/span> <span class=\"n\">m<\/span><span class=\"p\">.<\/span><span class=\"nf\">AnotherMethod<\/span><span class=\"p\">()).<\/span><span class=\"nf\">Returns<\/span><span class=\"p\">(<\/span><span class=\"m\">42<\/span><span class=\"p\">);<\/span>\n        <span class=\"kt\">var<\/span> <span class=\"n\">result1<\/span> <span class=\"p\">=<\/span> <span class=\"n\">_mock<\/span><span class=\"p\">.<\/span><span class=\"n\">Object<\/span><span class=\"p\">.<\/span><span class=\"nf\">MyMethod<\/span><span class=\"p\">();<\/span>\n        <span class=\"kt\">var<\/span> <span class=\"n\">result2<\/span> <span class=\"p\">=<\/span> <span class=\"n\">_mock<\/span><span class=\"p\">.<\/span><span class=\"n\">Object<\/span><span class=\"p\">.<\/span><span class=\"nf\">AnotherMethod<\/span><span class=\"p\">();<\/span>\n        <span class=\"n\">Assert<\/span><span class=\"p\">.<\/span><span class=\"nf\">AreEqual<\/span><span class=\"p\">(<\/span><span class=\"s\">\"World\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">result1<\/span><span class=\"p\">);<\/span>\n        <span class=\"n\">Assert<\/span><span class=\"p\">.<\/span><span class=\"nf\">AreEqual<\/span><span class=\"p\">(<\/span><span class=\"m\">42<\/span><span class=\"p\">,<\/span> <span class=\"n\">result2<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"p\">[<\/span><span class=\"n\">TestMethod<\/span><span class=\"p\">]<\/span>\n    <span class=\"k\">public<\/span> <span class=\"k\">void<\/span> <span class=\"nf\">Test3<\/span><span class=\"p\">()<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">_mock<\/span><span class=\"p\">.<\/span><span class=\"nf\">Setup<\/span><span class=\"p\">(<\/span><span class=\"n\">m<\/span> <span class=\"p\">=&gt;<\/span> <span class=\"n\">m<\/span><span class=\"p\">.<\/span><span class=\"nf\">MyMethod<\/span><span class=\"p\">()).<\/span><span class=\"nf\">Returns<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Goodbye\"<\/span><span class=\"p\">);<\/span>\n        <span class=\"kt\">var<\/span> <span class=\"n\">result<\/span> <span class=\"p\">=<\/span> <span class=\"n\">_mock<\/span><span class=\"p\">.<\/span><span class=\"n\">Object<\/span><span class=\"p\">.<\/span><span class=\"nf\">MyMethod<\/span><span class=\"p\">();<\/span>\n        <span class=\"n\">Assert<\/span><span class=\"p\">.<\/span><span class=\"nf\">AreEqual<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Goodbye\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">result<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n<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<h4><span class=\"ez-toc-section\" id=\"5_%D8%B4%D9%85%D8%A7_%D9%86%D9%85%DB%8C_%D8%AA%D9%88%D8%A7%D9%86%DB%8C%D8%AF_%D9%87%D8%B1_%D8%B1%D9%88%D8%B4%DB%8C_%D8%B1%D8%A7_%D9%85%D8%B3%D8%AE%D8%B1%D9%87_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  5. \u0634\u0645\u0627 \u0646\u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0647\u0631 \u0631\u0648\u0634\u06cc \u0631\u0627 \u0645\u0633\u062e\u0631\u0647 \u06a9\u0646\u06cc\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0631\u0648\u0634 \u0647\u0627 \u0631\u0627 \u0645\u0633\u062e\u0631\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645.  \u0648 \u0622\u0646\u0647\u0627 \u0628\u0627\u06cc\u062f \u0639\u0645\u0648\u0645\u06cc \u0628\u0627\u0634\u0646\u062f \u062a\u0627 \u0648\u0627\u062c\u062f \u0634\u0631\u0627\u06cc\u0637 \u062a\u0645\u0633\u062e\u0631 \u0628\u0627\u0634\u0646\u062f.<br \/>\u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u0686\u0627\u0631\u0686\u0648\u0628\u200c\u0647\u0627\u06cc \u062e\u0627\u0635\u06cc \u0628\u0647 \u0634\u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0628\u0627\u0632\u062a\u0627\u0628\u060c \u0631\u0648\u0634\u200c\u0647\u0627\u06cc \u062e\u0635\u0648\u0635\u06cc \u0631\u0627 \u0645\u0633\u062e\u0631\u0647 \u06a9\u0646\u06cc\u062f.  \u0627\u06cc\u0646 \u0627\u0634\u062a\u0628\u0627\u0647 \u0627\u0633\u062a \u0632\u06cc\u0631\u0627 \u06a9\u067e\u0633\u0648\u0644 \u0637\u0631\u0627\u062d\u06cc \u0634\u0645\u0627 \u0631\u0627 \u0645\u06cc \u0634\u06a9\u0646\u062f.  \u0645\u062b\u0627\u0644 \u0632\u06cc\u0631 \u062f\u0631 Mockito \u062f\u0631 \u062c\u0627\u0648\u0627:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code><span class=\"nf\">when<\/span><span class=\"p\">(<\/span><span class=\"n\">spy<\/span><span class=\"p\">,<\/span> <span class=\"nf\">method<\/span><span class=\"p\">(<\/span><span class=\"n\">CodeWaithPrivateMethod<\/span><span class=\"p\">.<\/span><span class=\"k\">class<\/span><span class=\"err\">,<\/span> <span class=\"err\">\"<\/span><span class=\"nc\">doTheGamble<\/span><span class=\"s\">\", String.class, int.class))\n<\/span>    <span class=\"p\">.<\/span><span class=\"nf\">withArguments<\/span><span class=\"p\">(<\/span><span class=\"nf\">anyString<\/span><span class=\"p\">(),<\/span> <span class=\"nf\">anyInt<\/span><span class=\"p\">())<\/span>\n    <span class=\"p\">.<\/span><span class=\"nf\">thenReturn<\/span><span class=\"p\">(<\/span><span class=\"k\">true<\/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<h3><span class=\"ez-toc-section\" id=\"%D8%A8%D9%87_%D8%AC%D8%A7%DB%8C_%D8%AA%D9%85%D8%B3%D8%AE%D8%B1_%DA%86%D9%87_%DA%A9%D9%86%D9%85%D8%9F\"><\/span>\n<p>  \u0628\u0647 \u062c\u0627\u06cc \u062a\u0645\u0633\u062e\u0631 \u0686\u0647 \u06a9\u0646\u0645\u061f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<h4><span class=\"ez-toc-section\" id=\"1_%D8%A2%D8%B2%D9%85%D9%88%D9%86_%D9%87%D8%A7%DB%8C_%DB%8C%DA%A9%D9%BE%D8%A7%D8%B1%DA%86%D9%87_%D8%B3%D8%A7%D8%B2%DB%8C\"><\/span>\n<p>  1. \u0622\u0632\u0645\u0648\u0646 \u0647\u0627\u06cc \u06cc\u06a9\u067e\u0627\u0631\u0686\u0647 \u0633\u0627\u0632\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u06cc\u06a9 \u062a\u0633\u062a \u0627\u062f\u063a\u0627\u0645 \u0628\u0646\u0648\u06cc\u0633\u06cc\u062f \u0646\u0647 \u062a\u0633\u062a \u0648\u0627\u062d\u062f.  \u0627\u0631\u0632\u0634 \u0628\u06cc\u0634\u062a\u0631\u06cc \u0628\u0631\u0627\u06cc \u0646\u0648\u0634\u062a\u0646 \u06cc\u06a9 \u0622\u0632\u0645\u0648\u0646 \u0627\u062f\u063a\u0627\u0645 \u0628\u0647 \u062c\u0627\u06cc \u0622\u0632\u0645\u0648\u0646 \u0648\u0627\u062d\u062f \u0628\u0627 \u0645\u0633\u062e\u0631\u0647 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f.  \u0628\u0627 \u0646\u0648\u0634\u062a\u0646 \u062a\u0633\u062a \u0647\u0627\u06cc \u06a9\u0645\u062a\u0631 \u06a9\u062f \u0628\u06cc\u0634\u062a\u0631\u06cc \u0631\u0627 \u067e\u0648\u0634\u0634 \u0645\u06cc \u062f\u0647\u06cc\u0645.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"2_%D8%A2%D8%B2%D9%85%D9%88%D9%86_%D9%87%D8%A7%DB%8C_%D9%BE%D8%A7%DB%8C%D8%A7%D9%86_%D8%A8%D9%87_%D8%A7%D9%86%D8%AA%D9%87%D8%A7\"><\/span>\n<p>  2. \u0622\u0632\u0645\u0648\u0646 \u0647\u0627\u06cc \u067e\u0627\u06cc\u0627\u0646 \u0628\u0647 \u0627\u0646\u062a\u0647\u0627<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0622\u0632\u0645\u0648\u0646 \u0627\u062f\u063a\u0627\u0645 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0628\u0647 \u06cc\u06a9 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u062e\u0627\u0631\u062c\u06cc \u0645\u062a\u06a9\u06cc \u0628\u0627\u0634\u062f.  \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f \u0646\u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 \u0622\u0646 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u062a\u06a9\u06cc\u0647 \u06a9\u0646\u06cc\u062f \u0632\u06cc\u0631\u0627 \u0622\u0646 \u0631\u0627 \u06a9\u0646\u062a\u0631\u0644 \u0646\u0645\u06cc \u06a9\u0646\u06cc\u062f.  \u06cc\u06a9 \u062a\u0633\u062a \u0633\u0631\u062a\u0627\u0633\u0631 \u0628\u0646\u0648\u06cc\u0633\u06cc\u062f \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u0628\u0647 \u0633\u06cc\u0633\u062a\u0645 \u062e\u0648\u062f \u0636\u0631\u0628\u0647 \u0628\u0632\u0646\u06cc\u062f \u0627\u0646\u06af\u0627\u0631 \u06a9\u0647 \u0645\u0634\u062a\u0631\u06cc \u0627\u06cc\u0646 \u0633\u06cc\u0633\u062a\u0645 \u0647\u0633\u062a\u06cc\u062f.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"3_%D8%AE%D8%B1%D8%AF\"><\/span>\n<p>  3. \u062e\u0631\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<blockquote>\n<p>\u06cc\u06a9 \u0642\u0637\u0639\u0647 \u062e\u0631\u062f \u0642\u0637\u0639\u0647 \u06a9\u0648\u0686\u06a9\u06cc \u0627\u0632 \u06a9\u062f \u0627\u0633\u062a \u06a9\u0647 \u062f\u0631 \u062d\u06cc\u0646 \u0622\u0632\u0645\u0627\u06cc\u0634 \u062c\u0627\u06cc \u0645\u0648\u0644\u0641\u0647 \u062f\u06cc\u06af\u0631\u06cc \u0631\u0627 \u0645\u06cc \u06af\u06cc\u0631\u062f.  \u0645\u0632\u06cc\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06cc\u06a9 \u062e\u0631\u062f \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0646\u062a\u0627\u06cc\u062c \u062b\u0627\u0628\u062a\u06cc \u0631\u0627 \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0627\u0646\u062f \u0648 \u0646\u0648\u0634\u062a\u0646 \u062a\u0633\u062a \u0631\u0627 \u0622\u0633\u0627\u0646\u200c\u062a\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f.<br \/>\u0627\u06af\u0631 \u0628\u0647 \u062f\u0644\u06cc\u0644 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0646\u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u06a9\u0646\u062a\u0631\u0644 \u06a9\u0646\u06cc\u062f \u0646\u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u06cc\u06a9 \u062a\u0633\u062a \u0633\u0631\u062a\u0627\u0633\u0631 \u0628\u0646\u0648\u06cc\u0633\u06cc\u062f &#8211; \u0627\u0632 Stubs \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.  \u0627\u06cc\u0646 \u0634\u0628\u06cc\u0647 \u0628\u0647 \u062a\u0645\u0633\u062e\u0631 \u0627\u0633\u062a\u060c \u0627\u0645\u0627 \u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a\u06cc \u0631\u0627 \u062f\u0631 \u0633\u06cc\u0633\u062a\u0645 \u062e\u0648\u062f \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u062f\u060c \u06cc\u06a9 \u0628\u0631\u0631\u0633\u06cc \u0646\u0648\u0639 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u062f.  \u062f\u0631 \u0632\u06cc\u0631 \u0646\u0645\u0648\u0646\u0647 \u0627\u06cc \u0627\u0632 \u06cc\u06a9 \u062e\u0631\u062f \u0633\u0627\u062f\u0647 \u0628\u0631\u0627\u06cc \u0645\u062e\u0632\u0646 \u062e\u0648\u062f\u0631\u0648 \u0622\u0648\u0631\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<\/blockquote>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code><span class=\"k\">public<\/span> <span class=\"k\">class<\/span> <span class=\"nc\">FakeCarRepository<\/span> <span class=\"p\">:<\/span> <span class=\"n\">ICarRepository<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">public<\/span> <span class=\"k\">async<\/span> <span class=\"n\">Task<\/span><span class=\"p\">&lt;<\/span><span class=\"n\">Car<\/span><span class=\"p\">&gt;<\/span> <span class=\"nf\">Create<\/span><span class=\"p\">(<\/span><span class=\"n\">Car<\/span> <span class=\"n\">car<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"c1\">\/\/ Any logic to accomodate for creating a car<\/span>\n        <span class=\"k\">return<\/span> <span class=\"k\">new<\/span> <span class=\"nf\">Car<\/span><span class=\"p\">();<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"k\">async<\/span> <span class=\"n\">Task<\/span><span class=\"p\">&lt;<\/span><span class=\"n\">Car<\/span><span class=\"p\">&gt;<\/span> <span class=\"nf\">Get<\/span><span class=\"p\">(<\/span><span class=\"kt\">string<\/span> <span class=\"n\">id<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"c1\">\/\/ Any logic to accomodate for getting a car<\/span>\n        <span class=\"k\">return<\/span> <span class=\"k\">new<\/span> <span class=\"nf\">Car<\/span><span class=\"p\">();<\/span>\n    <span class=\"p\">}<\/span>\n<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>\u06cc\u06a9\u06cc \u062f\u06cc\u06af\u0631 \u0627\u0632 \u0645\u0632\u0627\u06cc\u0627\u06cc \u0627\u06cc\u0646 \u062a\u0633\u062a \u062a\u0645\u06cc\u0632\u062a\u0631 \u0645\u06cc \u0634\u0648\u062f.  \u062a\u0645\u0627\u0645 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u062f\u0631 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u0627\u0633\u062a\u062e\u0631\u0627\u062c \u0645\u06cc \u0634\u0648\u0646\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code><span class=\"p\">[<\/span><span class=\"n\">Fact<\/span><span class=\"p\">]<\/span>\n<span class=\"k\">public<\/span> <span class=\"k\">async<\/span> <span class=\"k\">void<\/span> <span class=\"nf\">testCreateCar<\/span><span class=\"p\">()<\/span>\n<span class=\"p\">{<\/span>\n   <span class=\"kt\">var<\/span> <span class=\"n\">car<\/span> <span class=\"p\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nf\">Car<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span> <span class=\"n\">Name<\/span> <span class=\"p\">=<\/span> <span class=\"s\">\"BMW\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">Available<\/span> <span class=\"p\">=<\/span> <span class=\"k\">true<\/span> <span class=\"p\">};<\/span>\n\n   <span class=\"kt\">var<\/span> <span class=\"n\">controller<\/span> <span class=\"p\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nf\">CarsController<\/span><span class=\"p\">(<\/span><span class=\"k\">new<\/span> <span class=\"nf\">FakeCarRepository<\/span><span class=\"p\">());<\/span>\n   <span class=\"kt\">var<\/span> <span class=\"n\">createdCar<\/span> <span class=\"p\">=<\/span> <span class=\"k\">await<\/span> <span class=\"n\">controller<\/span><span class=\"p\">.<\/span><span class=\"nf\">Create<\/span><span class=\"p\">(<\/span><span class=\"n\">car<\/span><span class=\"p\">);<\/span>\n\n   <span class=\"n\">Assert<\/span><span class=\"p\">.<\/span><span class=\"nf\">NotNull<\/span><span class=\"p\">(<\/span><span class=\"n\">createdCar<\/span><span class=\"p\">);<\/span>\n<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<h2><span class=\"ez-toc-section\" id=\"%D8%AE%D9%84%D8%A7%D8%B5%D9%87\"><\/span>\n<p>  \u062e\u0644\u0627\u0635\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0628\u0647\u062a\u0631\u06cc\u0646 \u0631\u0648\u06cc\u06a9\u0631\u062f \u0628\u0647 \u0646\u06cc\u0627\u0632\u0647\u0627\u06cc \u062e\u0627\u0635 \u067e\u0631\u0648\u0698\u0647 \u0628\u0633\u062a\u06af\u06cc \u062f\u0627\u0631\u062f.  \u062a\u0645\u0627\u0645 \u0645\u0628\u0627\u062f\u0644\u0627\u062a \u0628\u06cc\u0646 \u062a\u0645\u0633\u062e\u0631 \u0648 \u0645\u0633\u062e\u0631\u0647 \u0646\u06a9\u0631\u062f\u0646 \u0631\u0627 \u062f\u0631 \u0646\u0638\u0631 \u0628\u06af\u06cc\u0631\u06cc\u062f.  \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u0647\u0627\u06cc \u062f\u06cc\u06af\u0631\u06cc \u0628\u0631\u0627\u06cc \u062a\u0645\u0633\u062e\u0631 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f \u06a9\u0647 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0627\u0632 \u0622\u0646\u0647\u0627 \u0644\u0630\u062a \u0628\u0628\u0631\u06cc\u062f.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D9%85%D9%86%D8%A7%D8%A8%D8%B9\"><\/span>\n<p>  \u0645\u0646\u0627\u0628\u0639<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ol>\n<li>\u0645\u0632\u0627\u06cc\u0627\u06cc \u0622\u0632\u0645\u0648\u0646 \u0627\u062f\u063a\u0627\u0645 \u0646\u0633\u0628\u062a \u0628\u0647 \u0622\u0632\u0645\u0648\u0646 \u0648\u0627\u062d\u062f<\/li>\n<li>\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 TestContainers \u0647\u0646\u06af\u0627\u0645 \u0646\u0648\u0634\u062a\u0646 \u062a\u0633\u062a \u06cc\u06a9\u067e\u0627\u0631\u0686\u0647 \u0633\u0627\u0632\u06cc<\/li>\n<\/ol><\/div>\n","protected":false},"excerpt":{"rendered":"<p>TLTR \u062a\u0645\u0633\u062e\u0631 \u0627\u063a\u0644\u0628 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0627\u0646\u062a\u062e\u0627\u0628 \u067e\u06cc\u0634 \u0641\u0631\u0636 \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u0646\u0648\u0634\u062a\u0646 \u062a\u0633\u062a \u0647\u0627 \u062f\u06cc\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f. \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u067e\u06cc\u0686\u06cc\u062f\u06af\u06cc \u063a\u06cc\u0631 \u0636\u0631\u0648\u0631\u06cc \u0631\u0627 \u0628\u0647 \u0633\u06cc\u0633\u062a\u0645 \u0634\u0645\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u062f. \u0631\u0648\u0634 \u0647\u0627\u06cc \u062f\u06cc\u06af\u0631\u06cc \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627 \u062f\u0631 \u062a\u0633\u062a \u0647\u0627 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f. \u0628\u06cc\u0634\u062a\u0631 \u062a\u0645\u0633\u062e\u0631 \u0686\u06cc\u0633\u062a\u061f \u062a\u0645\u0633\u062e\u0631 &#8211; \u0627\u06cc\u062c\u0627\u062f \u0627\u0634\u06cc\u0627\u06cc\u06cc \u06a9\u0647 \u0631\u0641\u062a\u0627\u0631 \u0627\u0634\u06cc\u0627\u0621 \u0648\u0627\u0642\u0639\u06cc \u0631\u0627 &hellip;<\/p>\n","protected":false},"author":2,"featured_media":18735,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-18734","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\/18734","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=18734"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/18734\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/18735"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=18734"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=18734"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=18734"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}