{"id":717,"date":"2018-06-19T14:36:24","date_gmt":"2018-06-19T14:36:24","guid":{"rendered":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/?p=717"},"modified":"2020-12-08T16:57:13","modified_gmt":"2020-12-08T16:57:13","slug":"mocks-in-the-test-environment-part-2","status":"publish","type":"post","link":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/mocks-in-the-test-environment-part-2\/","title":{"rendered":"Mocks in the test environment (Part 2)"},"content":{"rendered":"\n<p>In the <a href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/mocks-in-the-test-environment-part-1\">first part<\/a> the basics of the mock and the example project were presented. In the second part we build a mock that interactively tests our Rest-Service application.<\/p>\n\n\n\n<p>Now the question comes up: &#8220;Why should I use a mock in this example?&#8221; After all, it&#8217;s a simple, straightforward application. However, we must remember that we want to test the standard functionality of the API. When we execute a GET or POST command, the rest of the service takes the complete path to the database to access the data already stored. This is where the mock comes into play. The access to the database is simulated by the mock. This ensures that if an error is found, it has nothing to do with the access to the database, but with the area in which we performed the test. This would be an example of the application area. Another would be the access from outside to the API. Normally such an API would have a frontend for entering the information. However, since we know the paths into which the data is fed, we can use an API tool that simulates the frontend and sends specific data to the API.<\/p>\n\n\n\n<p>In this part I will talk about the mock framework &#8220;Moq&#8221; and the API test tool &#8220;Postman&#8221;.<\/p>\n\n\n\n<p>Moq is a small and simple mock framework for .Net or C#. There are several frameworks (NSubstitute, Rhino Mocks, etc &#8230;) but they are usually quite complicated to use. Moq stands out in the sense that it uses a simple syntax and is perfectly adequate for most applications. The Moq framework package can be easily downloaded from Visual Studio with the nuget tool and directly included in the source code.<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<pre class=\"wp-block-code\"><code>using System.Net.Http;\nusing Moq;\nusing NUnit.Framework;<\/code><\/pre>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Here the simple structure of a unit test. We create a new hero list, which gets its data from the database. With this information we can create the service which is consumed by the API. We call up the fourth hero we have stored. In this case it would be &#8220;Maria&#8221;.<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;Test]\n  public void TestMethodwithoutMoq()\n{\n    \/\/Arrange (Create)\n   Herolist h_list = new Herolist();\n   var heroAPI = new HeroService(h_list);\n   string shouldBe = \u201eMaria\u201c;\n   \/\/Act (Test)\n   var result = heroAPI.GetHeroName(4);\n   \/\/Assert (Verify)\n   Assert.That(result,Is.EqualTo(shouldBe),\u201cIs Not as Aspected\u201c);\n   }\n\n&#91;Route(\u201eapi\/hero\/{number}\u201c)]\n&#91;HttpGet]\npublic string GetHeroName(int number)\n{\n   Hero hero = heroAPI.GetHero(number)\n   Return hero.name;\n}<\/code><\/pre>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Now we take the already existing structure and replace the hero list with a mock. This way we no longer use the data stored in the database and have separated the application from the database for the time being. This setup guarantees that no errors from the database connection will interfere with the test<em>.<\/em><\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;Test]\npublic void TestMethodwithMoq()\n{\n    Hero mockHero = new Hero()\n{\n    name = \u201eDetlef\u201c,\n    class = \u201eWizard\u201c,\n    age = 40,\n    level = 14\n};\n\/\/Arrange (Create)\nvar moqHerolist = new Mock();\nmoqHerolist.Setup(x => x.GetHero(It.IsAny()))\n    .Returns(() => mockHero);\n\nvar heroapi_mock = new HeldenAPI(moqHerolist.Object);\nvar shouldBe = \u201eDetlef\u201c;\n\/\/Act (Test)\nvar result = heroapi_mock.GetHeroName(It.IsAny());\n\/\/Assert (Verify)\nAssert.That(result, Is.EqualTo(shouldBe), \u201eIs Not as Aspectet\u201c);\n}<\/code><\/pre>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>If the Moq framework is integrated, you can use the class &#8220;Mock&#8221;. When using the class, you specify which class should be simulated. The next step is to configure the mock with the setup() function. We specify that no matter which hero is asked for (It.IsAny), the mockHero (Detlef) will always be output. If we would not configure the mock, it would take a default value as integer when calling the GetHeroName() function. This is usually &#8220;0&#8221;. But since no data is fetched from the database, it would return an error.<\/p>\n\n\n\n<p>The Moq framework can be used to test the functionality the API calls within your application. However, when calling the API directly, it reaches its limits. This is where the API tool &#8220;Postman&#8221; comes into play.<\/p>\n\n\n\n<p>&#8220;Postman&#8221; can be installed as a separate application or used as a chrome plugin. It is equipped with most REST commands (GET, POST, PUT, etc&#8230;) and has an easy to use interface. It is possible to write test cases that run during the REST commands and work with the sent or received data. So, we build a mock with it, which simulates the frontend.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"739\" src=\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-content\/uploads\/sites\/3\/2020\/06\/201806_mocks_in_the_test_environment_part-2_1-1024x739.png\" alt=\"\" class=\"wp-image-739\" srcset=\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-content\/uploads\/sites\/3\/2020\/06\/201806_mocks_in_the_test_environment_part-2_1-1024x739.png 1024w, https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-content\/uploads\/sites\/3\/2020\/06\/201806_mocks_in_the_test_environment_part-2_1-600x433.png 600w, https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-content\/uploads\/sites\/3\/2020\/06\/201806_mocks_in_the_test_environment_part-2_1-768x554.png 768w, https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-content\/uploads\/sites\/3\/2020\/06\/201806_mocks_in_the_test_environment_part-2_1-640x462.png 640w, https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-content\/uploads\/sites\/3\/2020\/06\/201806_mocks_in_the_test_environment_part-2_1.png 1067w\" sizes=\"auto, (max-width: 639px) 98vw, (max-width: 1199px) 64vw, 770px\" \/><\/figure>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>You can create &#8220;Collections&#8221; to store the REST commands we used in the last part. With the POST command we stored the heroine Maria via the API. Now we added a test case which checks the response text we got back from the API. In a positive case we get back that the desired hero has been added. In a negative case we would get another message and the Test-case would return Failed.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"742\" src=\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-content\/uploads\/sites\/3\/2020\/06\/201806_mocks_in_the_test_environment_part-2_2-1024x742.png\" alt=\"\" class=\"wp-image-740\" srcset=\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-content\/uploads\/sites\/3\/2020\/06\/201806_mocks_in_the_test_environment_part-2_2-1024x742.png 1024w, https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-content\/uploads\/sites\/3\/2020\/06\/201806_mocks_in_the_test_environment_part-2_2-600x435.png 600w, https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-content\/uploads\/sites\/3\/2020\/06\/201806_mocks_in_the_test_environment_part-2_2-768x557.png 768w, https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-content\/uploads\/sites\/3\/2020\/06\/201806_mocks_in_the_test_environment_part-2_2-640x464.png 640w, https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-content\/uploads\/sites\/3\/2020\/06\/201806_mocks_in_the_test_environment_part-2_2.png 1062w\" sizes=\"auto, (max-width: 639px) 98vw, (max-width: 1199px) 64vw, 770px\" \/><\/figure>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>We also add the query for the last added hero to our &#8220;Collection&#8221;. You can add many more queries with your own test cases to the &#8220;Collection&#8221;, but for our example these two are sufficient. Now it is possible to start the complete &#8220;Collection&#8221;. The &#8220;Postman&#8221; will then call all REST commands one after the other and go through their stored Test Cases. So, we get such a result in the end:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"542\" height=\"217\" src=\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-content\/uploads\/sites\/3\/2020\/06\/201806_mocks_in_the_test_environment_part-2_3.png\" alt=\"\" class=\"wp-image-741\"\/><\/figure>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>We can see now that the access from outside, to the API works.<\/p>\n\n\n\n<p>With these examples we see that with the Moq framework the application behind the API can be easily tested. The &#8220;Postman&#8221; on the other hand makes it easier to test the API from the Internet.<\/p>\n\n\n\n<figure class=\"wp-block-image size-medium\"><img decoding=\"async\" src=\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/04\/201806_Mocks_Testumgebung_2-600x129.png\" alt=\"\u00dcberblick Postman und Moq Framework\" class=\"wp-image-324\"\/><\/figure>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>In the next part we will continue to deal with this topic. We will build a small test environment in Docker where the Rest service will be built with the database, and a self-written mock application will continuously try to access the Rest API. This variant could also be used as a load test later on.<\/p>\n\n\n\n<p>This was Mocks in the test environment. An here you&#8217;ll find <a href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/mocks-in-the-test-environment-part-3\/\">part 3<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the first part the basics of the mock and the example project were presented. In the second part we build a mock that interactively tests our Rest-Service application.<\/p>\n","protected":false},"author":76,"featured_media":752,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"advgb_blocks_editor_width":"","advgb_blocks_columns_visual_guide":"","footnotes":""},"categories":[7],"tags":[355,218,346,347,352,353,354],"topics":[83],"class_list":["post-717","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-quality-assurance","tag-postman","tag-test-environment","tag-mocks","tag-moq","tag-api","tag-framework-moq","tag-api-tools","topics-mocks-in-the-test-environment"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Mocks in the test environment (Part 2) - ZEISS Digital Innovation Blog<\/title>\n<meta name=\"description\" content=\"In this second part of the blog post series &quot;Mocks in the test environment&quot; we build a mock that interactively tests our Rest-Service application.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/mocks-in-the-test-environment-part-2\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Mocks in the test environment (Part 2) - ZEISS Digital Innovation Blog\" \/>\n<meta property=\"og:description\" content=\"In this second part of the blog post series &quot;Mocks in the test environment&quot; we build a mock that interactively tests our Rest-Service application.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/mocks-in-the-test-environment-part-2\/\" \/>\n<meta property=\"og:site_name\" content=\"Digital Innovation Blog\" \/>\n<meta property=\"article:published_time\" content=\"2018-06-19T14:36:24+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-12-08T16:57:13+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-content\/uploads\/sites\/3\/2018\/06\/201806_mocks_in_the_test_environment_part-2_1_fi.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1176\" \/>\n\t<meta property=\"og:image:height\" content=\"653\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Neco Giedrojc\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Neco Giedrojc\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/mocks-in-the-test-environment-part-2\/\",\"url\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/mocks-in-the-test-environment-part-2\/\",\"name\":\"Mocks in the test environment (Part 2) - ZEISS Digital Innovation Blog\",\"isPartOf\":{\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/mocks-in-the-test-environment-part-2\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/mocks-in-the-test-environment-part-2\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-content\/uploads\/sites\/3\/2018\/06\/201806_mocks_in_the_test_environment_part-2_1_fi.png\",\"datePublished\":\"2018-06-19T14:36:24+00:00\",\"dateModified\":\"2020-12-08T16:57:13+00:00\",\"author\":{\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/#\/schema\/person\/52922d077aabdd8130bc2df264e0cf5b\"},\"description\":\"In this second part of the blog post series \\\"Mocks in the test environment\\\" we build a mock that interactively tests our Rest-Service application.\",\"breadcrumb\":{\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/mocks-in-the-test-environment-part-2\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/mocks-in-the-test-environment-part-2\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/mocks-in-the-test-environment-part-2\/#primaryimage\",\"url\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-content\/uploads\/sites\/3\/2018\/06\/201806_mocks_in_the_test_environment_part-2_1_fi.png\",\"contentUrl\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-content\/uploads\/sites\/3\/2018\/06\/201806_mocks_in_the_test_environment_part-2_1_fi.png\",\"width\":1176,\"height\":653},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/mocks-in-the-test-environment-part-2\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mocks in the test environment (Part 2)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/#website\",\"url\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/\",\"name\":\"Digital Innovation Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/#\/schema\/person\/52922d077aabdd8130bc2df264e0cf5b\",\"name\":\"Neco Giedrojc\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-content\/uploads\/sites\/3\/2020\/05\/giedrojc_neco-150x150.jpg\",\"contentUrl\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-content\/uploads\/sites\/3\/2020\/05\/giedrojc_neco-150x150.jpg\",\"caption\":\"Neco Giedrojc\"},\"description\":\"Shortly after completing his degree in \\\"Computer Engineering\\\", Neco Giedrojc joined the test area of ZEISS Digital Innovation and works there as a tester. In his main project, he is currently dealing with the integration test of complex systems.\",\"url\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/author\/ennecogiedrojc\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Mocks in the test environment (Part 2) - ZEISS Digital Innovation Blog","description":"In this second part of the blog post series \"Mocks in the test environment\" we build a mock that interactively tests our Rest-Service application.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/mocks-in-the-test-environment-part-2\/","og_locale":"en_US","og_type":"article","og_title":"Mocks in the test environment (Part 2) - ZEISS Digital Innovation Blog","og_description":"In this second part of the blog post series \"Mocks in the test environment\" we build a mock that interactively tests our Rest-Service application.","og_url":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/mocks-in-the-test-environment-part-2\/","og_site_name":"Digital Innovation Blog","article_published_time":"2018-06-19T14:36:24+00:00","article_modified_time":"2020-12-08T16:57:13+00:00","og_image":[{"width":1176,"height":653,"url":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-content\/uploads\/sites\/3\/2018\/06\/201806_mocks_in_the_test_environment_part-2_1_fi.png","type":"image\/png"}],"author":"Neco Giedrojc","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Neco Giedrojc","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/mocks-in-the-test-environment-part-2\/","url":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/mocks-in-the-test-environment-part-2\/","name":"Mocks in the test environment (Part 2) - ZEISS Digital Innovation Blog","isPartOf":{"@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/mocks-in-the-test-environment-part-2\/#primaryimage"},"image":{"@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/mocks-in-the-test-environment-part-2\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-content\/uploads\/sites\/3\/2018\/06\/201806_mocks_in_the_test_environment_part-2_1_fi.png","datePublished":"2018-06-19T14:36:24+00:00","dateModified":"2020-12-08T16:57:13+00:00","author":{"@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/#\/schema\/person\/52922d077aabdd8130bc2df264e0cf5b"},"description":"In this second part of the blog post series \"Mocks in the test environment\" we build a mock that interactively tests our Rest-Service application.","breadcrumb":{"@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/mocks-in-the-test-environment-part-2\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blogs.zeiss.com\/digital-innovation\/en\/mocks-in-the-test-environment-part-2\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/mocks-in-the-test-environment-part-2\/#primaryimage","url":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-content\/uploads\/sites\/3\/2018\/06\/201806_mocks_in_the_test_environment_part-2_1_fi.png","contentUrl":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-content\/uploads\/sites\/3\/2018\/06\/201806_mocks_in_the_test_environment_part-2_1_fi.png","width":1176,"height":653},{"@type":"BreadcrumbList","@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/mocks-in-the-test-environment-part-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/"},{"@type":"ListItem","position":2,"name":"Mocks in the test environment (Part 2)"}]},{"@type":"WebSite","@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/#website","url":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/","name":"Digital Innovation Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/#\/schema\/person\/52922d077aabdd8130bc2df264e0cf5b","name":"Neco Giedrojc","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/#\/schema\/person\/image\/","url":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-content\/uploads\/sites\/3\/2020\/05\/giedrojc_neco-150x150.jpg","contentUrl":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-content\/uploads\/sites\/3\/2020\/05\/giedrojc_neco-150x150.jpg","caption":"Neco Giedrojc"},"description":"Shortly after completing his degree in \"Computer Engineering\", Neco Giedrojc joined the test area of ZEISS Digital Innovation and works there as a tester. In his main project, he is currently dealing with the integration test of complex systems.","url":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/author\/ennecogiedrojc\/"}]}},"author_meta":{"display_name":"Neco Giedrojc","author_link":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/author\/ennecogiedrojc\/"},"featured_img":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-content\/uploads\/sites\/3\/2018\/06\/201806_mocks_in_the_test_environment_part-2_1_fi-600x333.png","coauthors":[],"tax_additional":{"categories":{"linked":["<a href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/category\/quality-assurance\/\" class=\"advgb-post-tax-term\">Quality Assurance<\/a>"],"unlinked":["<span class=\"advgb-post-tax-term\">Quality Assurance<\/span>"]},"tags":{"linked":["<a href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/category\/quality-assurance\/\" class=\"advgb-post-tax-term\">Postman<\/a>","<a href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/category\/quality-assurance\/\" class=\"advgb-post-tax-term\">test environment<\/a>","<a href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/category\/quality-assurance\/\" class=\"advgb-post-tax-term\">Mocks<\/a>","<a href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/category\/quality-assurance\/\" class=\"advgb-post-tax-term\">Moq<\/a>","<a href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/category\/quality-assurance\/\" class=\"advgb-post-tax-term\">API<\/a>","<a href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/category\/quality-assurance\/\" class=\"advgb-post-tax-term\">Framework-Moq<\/a>","<a href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/category\/quality-assurance\/\" class=\"advgb-post-tax-term\">API-Tools<\/a>"],"unlinked":["<span class=\"advgb-post-tax-term\">Postman<\/span>","<span class=\"advgb-post-tax-term\">test environment<\/span>","<span class=\"advgb-post-tax-term\">Mocks<\/span>","<span class=\"advgb-post-tax-term\">Moq<\/span>","<span class=\"advgb-post-tax-term\">API<\/span>","<span class=\"advgb-post-tax-term\">Framework-Moq<\/span>","<span class=\"advgb-post-tax-term\">API-Tools<\/span>"]}},"comment_count":"0","relative_dates":{"created":"Posted 8 years ago","modified":"Updated 5 years ago"},"absolute_dates":{"created":"Posted on June 19, 2018","modified":"Updated on December 8, 2020"},"absolute_dates_time":{"created":"Posted on June 19, 2018 2:36 pm","modified":"Updated on December 8, 2020 4:57 pm"},"featured_img_caption":"","series_order":"","_links":{"self":[{"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-json\/wp\/v2\/posts\/717","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-json\/wp\/v2\/users\/76"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-json\/wp\/v2\/comments?post=717"}],"version-history":[{"count":7,"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-json\/wp\/v2\/posts\/717\/revisions"}],"predecessor-version":[{"id":1200,"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-json\/wp\/v2\/posts\/717\/revisions\/1200"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-json\/wp\/v2\/media\/752"}],"wp:attachment":[{"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-json\/wp\/v2\/media?parent=717"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-json\/wp\/v2\/categories?post=717"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-json\/wp\/v2\/tags?post=717"},{"taxonomy":"topics","embeddable":true,"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-json\/wp\/v2\/topics?post=717"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}