{"id":318,"date":"2018-06-19T15:21:43","date_gmt":"2018-06-19T15:21:43","guid":{"rendered":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/?p=318"},"modified":"2020-12-08T16:53:59","modified_gmt":"2020-12-08T16:53:59","slug":"mocks-in-der-testumgebung-teil-2","status":"publish","type":"post","link":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/mocks-in-der-testumgebung-teil-2\/","title":{"rendered":"Mocks in der Testumgebung (Teil 2)"},"content":{"rendered":"\n<p>Im <a href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/mocks-in-der-testumgebung-teil-1\">ersten Teil<\/a> wurden Grundlagen zum Mock und das Beispielprojekt vorgestellt. Im zweiten Teil bauen wir einen Mock auf, der unsere Rest-Service-Anwendung interaktiv testet.<\/p>\n\n\n\n<p>Nun kommt es zu der Frage: \u201eWarum sollte ich bei diesem Beispiel einen Mock verwenden?\u201c Es ist immerhin eine einfache, \u00fcbersichtliche Anwendung. Wir m\u00fcssen allerdings beachten, dass wir die Standardfunktionalit\u00e4t der API testen wollen. Wenn wir einen GET- oder POST-Befehl durchf\u00fchren, wird innerhalb des Rest-Services der komplette Weg zur Datenbank genommen, um auf die Daten, die bereits gespeichert sind, zuzugreifen. An diesem Punkt kommt der Mock ins Spiel. Es wird der Zugriff auf die Datenbank, mit Hilfe des Mocks simuliert. Somit kann sichergestellt werden, dass falls ein Fehler gefunden wird, dieser nichts mit dem Zugriff auf die Datenbank zu tun hat, sondern mit dem Bereich in dem wir den Test durchgef\u00fchrt haben. Das w\u00e4re ein Beispiel f\u00fcr das Anwendungsgebiet. Ein weiteres w\u00e4re der Zugriff von au\u00dfen auf die API. Im Normalfall w\u00fcrde eine solche API ein Frontend zur Eingabe der Informationen besitzen. Da wir allerdings die Pfade kennen, in die die Daten eingespeist werden, k\u00f6nnen wir ein API-Tool verwenden, welches das Frontend simuliert und spezifische Daten an die API schickt.<\/p>\n\n\n\n<p>Ich werde in diesem Teil auf das Mock-Framework \u201eMoq\u201c eingehen und das API-Test-Tool \u201ePostman\u201c.<\/p>\n\n\n\n<p>Moq ist ein kleines und einfaches Mock-Framework f\u00fcr .Net oder C#. Es gibt mehrere Framework (NSubstitute, Rhino Mocks, etc \u2026) doch diese sind meist recht kompliziert zu verwenden. Moq sticht in dem Sinne heraus, dass es eine einfache Syntax verwendet und f\u00fcr die meisten Anwendungsgebiete vollkommend ausreichend ist. Das Moq Framework-Package kann \u00fcber Visual Studio einfach mit dem Nuget-Tool heruntergeladen und direkt in dem Quellcode eingebunden werden.<\/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>Hier der einfache Aufbau eines Unit-Tests. Wir erstellen eine neue Heldenliste, welche ihre Daten aus der Datenbank bekommt. Mit diesen Informationen k\u00f6nnen wir den Service erstellen, der von der API abgerufen wird. Wir rufen den vierten Helden auf, den wir eingespeichert haben. In diesem Fall w\u00e4re es \u201eMaria\u201c.<\/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   Heldenliste liste = new Heldenliste();\n   var heldAPI = new HeldenService(liste);\n   string shouldBe = \"Maria\";\n   \/\/Act (Test)\n   var ergebnis = heldAPI.GetHeroName(4);\n   \/\/Assert (Verify)\n   Assert.That(ergebnis,Is.EqualTo(shouldBe),\"Is Not as Aspected\");\n   }\n&#91;Route(\"api\/Helden\/{number}\")]\n&#91;HttpGet]\npublic string GetHeroName(int number)\n{\n   Held hero = heldenAPI.GetHero(number)\n   Return hero.name;\n}<\/code><\/pre>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Jetzt nehmen wir den bereits vorhandenen Aufbau und ersetzen die Heldenliste mit einem Mock. Somit verwenden wir nicht mehr die Daten, die in der Datenbank gespeichert sind und haben die <em>Anwendung erstmal von der Datenbank getrennt. Mit diesem Aufbau ist garantiert, dass keine Fehler von der Datenbankverbindung den Test behindern.<\/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    Helden mockHero = new Helden()\n{\n    Name = \"Detlef\",\n    Klasse = \"Zauberer\",\n    Alter = 40,\n    Level = 14\n};\n\/\/Arrange (Create)\nvar moqHeldenliste = new Mock();\nmoqHeldenliste.Setup(x => x.GetHero(It.IsAny()))\n    .Returns(() => mockHero);<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>var heldenapi_mock = new HeldenAPI(moqHeldenliste.Object);\nvar shouldBe = \"Detlef\";\n\/\/Act (Test)\nvar ergebnis = heldenapi_mock.GetHeroName(It.IsAny());\n\/\/Assert (Verify)\nAssert.That(ergebnis, Is.EqualTo(shouldBe), \"Is Not as Aspectet\");\n}<\/code><\/pre>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Wenn das Moq-Framework integriert ist, kann man die Klasse-\u201eMock\u201c verwenden. Bei der Verwendung der Klasse gibt man an welche Klasse simuliert werden soll. Der n\u00e4chste Schritt ist es dann den Mock mit der Setup()-Funktion zu konfigurieren. Wir geben an, dass egal nach welchem Helden gefragt wird(It.IsAny), immer der mockHero(Detlef) ausgegeben wird. W\u00fcrden wir den Mock nicht konfigurieren, w\u00fcrde er bei dem Aufruf der GetHeroName()-Funktion einen Default-Wert als Integer nehmen. Bei diesem handelt es sich meist um \u201e0\u201c. Da allerdings keine Daten aus der Datenbank geholt werden, w\u00fcrde er einen Fehler zur\u00fcckgeben.<\/p>\n\n\n\n<p>Das Moq-Framework l\u00e4sst sich gut nutzen, um die Funktionalit\u00e4ten die die API innerhalb ihrer Anwendung aufruft zu testen. Bei dem direkten Aufruf der API kommt sie allerdings an ihre Grenzen. Hier kommt das API-Tool \u201ePostman\u201c ins Spiel.<\/p>\n\n\n\n<p>\u201ePostman\u201c kann man als separate Anwendung installieren oder als Chrome-Plugin verwenden. Er ist ausger\u00fcstet mit den meisten REST-Befehlen (GET, POST, PUT, etc\u2026) und weist eine leicht bedienbare Oberfl\u00e4che auf. Es ist m\u00f6glich, Testf\u00e4lle zu schreiben, die w\u00e4hrend der REST-Befehle ablaufen und mit den gesendeten oder empfangenen Daten arbeiten. Somit bauen wir mit ihm einen Mock, der das Frontend simuliert.<\/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\/de\/wp-content\/uploads\/sites\/2\/2020\/04\/201806_Postman_1-1024x739.png\" alt=\"API-Test-Tool \u201ePostman\u201c\" class=\"wp-image-321\" srcset=\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/04\/201806_Postman_1-1024x739.png 1024w, https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/04\/201806_Postman_1-600x433.png 600w, https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/04\/201806_Postman_1-768x554.png 768w, https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/04\/201806_Postman_1-640x462.png 640w, https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/04\/201806_Postman_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>Es k\u00f6nnen \u201eCollections\u201c erstellt werden, in denen man die REST-Befehle, die wir im letzten Teil verwendet haben, gespeichert werden k\u00f6nnen. Mit dem POST-Befehl haben wir die Heldin Maria \u00fcber die API gespeichert. Jetzt wurde noch ein Testfall hinzugef\u00fcgt, welcher den Antworttext \u00fcberpr\u00fcft, den wir von der API zur\u00fcckbekommen haben. In einem positiven Fall wird zur\u00fcckgemeldet, dass der gew\u00fcnschte Held hinzugef\u00fcgt wurde. In einem Negativ-Fall w\u00fcrden wir eine andere Meldung bekommen und der Testfall w\u00fcrde Failed zur\u00fcckgeben.<\/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\/de\/wp-content\/uploads\/sites\/2\/2020\/04\/201806_Postman_2-1024x742.png\" alt=\"API-Test-Tool \u201ePostman\u201c\" class=\"wp-image-322\" srcset=\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/04\/201806_Postman_2-1024x742.png 1024w, https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/04\/201806_Postman_2-600x435.png 600w, https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/04\/201806_Postman_2-768x557.png 768w, https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/04\/201806_Postman_2-640x464.png 640w, https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/04\/201806_Postman_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>Unserer \u201eCollection\u201c f\u00fcgen wir auch die Abfrage nach dem letzten zugef\u00fcgten Helden hinzu. Es k\u00f6nnen noch viele weitere Abfragen mit eigenen Testf\u00e4llen der \u201eCollection\u201c hinzugef\u00fcgt werden, doch f\u00fcr unser Beispiel reichen diese beiden. Nun ist es m\u00f6glich die komplette \u201eCollection\u201c zu starten. Der \u201ePostman\u201c wird darauf hin nacheinander alle REST-Befehle aufrufen und ihre dazu gespeicherten Testf\u00e4lle durchgehen. Somit bekommen wir am Ende solch ein Ergebnis:<\/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\/de\/wp-content\/uploads\/sites\/2\/2020\/04\/201806_Postman_3.png\" alt=\"API-Test-Tool \u201ePostman\u201c\" class=\"wp-image-323\"\/><\/figure>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Somit sehen wir, dass der Zugriff von au\u00dferhalb, auf die API funktioniert.<br>Mit diesen Beispielen sehen wir, dass mit dem Moq Framework die Anwendung hinter der API einfach getestet werden kann. Der \u201ePostman\u201c hingegen vereinfacht, dass testen der API von Seiten des Internets.<\/p>\n\n\n\n<figure class=\"wp-block-image size-medium\"><img loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"129\" 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\" srcset=\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/04\/201806_Mocks_Testumgebung_2-600x129.png 600w, https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/04\/201806_Mocks_Testumgebung_2-640x137.png 640w, https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/04\/201806_Mocks_Testumgebung_2.png 755w\" sizes=\"auto, (max-width: 639px) 98vw, (max-width: 1199px) 64vw, 600px\" \/><\/figure>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Im n\u00e4chsten Teil werden wir uns weiterhin mit diesem Thema befassen. Dabei werden wir in Docker eine kleine Testumgebung aufbauen, in dem der Rest-Service mit der Datenbank aufgebaut wird, und eine selbst geschriebene Mock Anwendung wird kontinuierlich Zugriff auf die Rest API versuchen. Diese Variante k\u00f6nnte man im sp\u00e4teren Verlauf auch als Lasttest verwenden.<\/p>\n\n\n\n<p>Das was Mocks in der Testumgebung Teil 2 und hier geht es zu <a href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/mocks-in-der-testumgebung-teil-3\/\">Teil 3<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Im ersten Teil wurden Grundlagen zum Mock und das Beispielprojekt vorgestellt. Im zweiten Teil bauen wir einen Mock auf, der unsere Rest-Service-Anwendung interaktiv testet.<\/p>\n","protected":false},"author":19,"featured_media":1354,"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":[10],"tags":[136,137,139,142,143,144,175],"topics":[241],"class_list":["post-318","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-qualitaetssicherung","tag-testumgebung","tag-mocks","tag-moq","tag-api","tag-framework-moq","tag-api-tools","tag-postman","topics-mocks-in-der-testumgebung"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Mocks in der Testumgebung (Teil 2) - ZEISS Digital Innovation Blog<\/title>\n<meta name=\"description\" content=\"Im ersten Teil wurden Grundlagen zum Mock vorgestellt. Im zweiten Teil bauen wir einen Mock auf, der unsere Rest-Service-Anwendung interaktiv testet.\" \/>\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\/de\/mocks-in-der-testumgebung-teil-2\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Mocks in der Testumgebung (Teil 2) - ZEISS Digital Innovation Blog\" \/>\n<meta property=\"og:description\" content=\"Im ersten Teil wurden Grundlagen zum Mock vorgestellt. Im zweiten Teil bauen wir einen Mock auf, der unsere Rest-Service-Anwendung interaktiv testet.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/mocks-in-der-testumgebung-teil-2\/\" \/>\n<meta property=\"og:site_name\" content=\"Digital Innovation Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/ZEISSDigitalInnovation\/\" \/>\n<meta property=\"article:published_time\" content=\"2018-06-19T15:21:43+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-12-08T16:53:59+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2018\/06\/201806_Postman_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:creator\" content=\"@ZEISS_di\" \/>\n<meta name=\"twitter:site\" content=\"@ZEISS_di\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Neco Giedrojc\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"5\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/mocks-in-der-testumgebung-teil-2\/\",\"url\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/mocks-in-der-testumgebung-teil-2\/\",\"name\":\"Mocks in der Testumgebung (Teil 2) - ZEISS Digital Innovation Blog\",\"isPartOf\":{\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/mocks-in-der-testumgebung-teil-2\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/mocks-in-der-testumgebung-teil-2\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2018\/06\/201806_Postman_1_fi.png\",\"datePublished\":\"2018-06-19T15:21:43+00:00\",\"dateModified\":\"2020-12-08T16:53:59+00:00\",\"author\":{\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/#\/schema\/person\/636a70d9f661e239161bd72d164b9942\"},\"description\":\"Im ersten Teil wurden Grundlagen zum Mock vorgestellt. Im zweiten Teil bauen wir einen Mock auf, der unsere Rest-Service-Anwendung interaktiv testet.\",\"breadcrumb\":{\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/mocks-in-der-testumgebung-teil-2\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/mocks-in-der-testumgebung-teil-2\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/mocks-in-der-testumgebung-teil-2\/#primaryimage\",\"url\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2018\/06\/201806_Postman_1_fi.png\",\"contentUrl\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2018\/06\/201806_Postman_1_fi.png\",\"width\":1176,\"height\":653},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/mocks-in-der-testumgebung-teil-2\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mocks in der Testumgebung (Teil 2)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/#website\",\"url\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/\",\"name\":\"Digital Innovation Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/#\/schema\/person\/636a70d9f661e239161bd72d164b9942\",\"name\":\"Neco Giedrojc\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/05\/giedrojc_neco-scaled-e1588663640620-150x150.jpg\",\"contentUrl\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/05\/giedrojc_neco-scaled-e1588663640620-150x150.jpg\",\"caption\":\"Neco Giedrojc\"},\"description\":\"Neco Giedrojc schloss sich kurz nach seinem Studienabschluss im Bereich \u201eComputer Engineering\u201c dem Testbereich der ZEISS Digital Innovation an und arbeitet dort als Tester. Dabei befasst er sich in seinem Hauptprojekt aktuell mit dem Integrationstest komplexer Systeme.\",\"url\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/author\/necogiedrojc\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Mocks in der Testumgebung (Teil 2) - ZEISS Digital Innovation Blog","description":"Im ersten Teil wurden Grundlagen zum Mock vorgestellt. Im zweiten Teil bauen wir einen Mock auf, der unsere Rest-Service-Anwendung interaktiv testet.","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\/de\/mocks-in-der-testumgebung-teil-2\/","og_locale":"de_DE","og_type":"article","og_title":"Mocks in der Testumgebung (Teil 2) - ZEISS Digital Innovation Blog","og_description":"Im ersten Teil wurden Grundlagen zum Mock vorgestellt. Im zweiten Teil bauen wir einen Mock auf, der unsere Rest-Service-Anwendung interaktiv testet.","og_url":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/mocks-in-der-testumgebung-teil-2\/","og_site_name":"Digital Innovation Blog","article_publisher":"https:\/\/www.facebook.com\/ZEISSDigitalInnovation\/","article_published_time":"2018-06-19T15:21:43+00:00","article_modified_time":"2020-12-08T16:53:59+00:00","og_image":[{"width":1176,"height":653,"url":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2018\/06\/201806_Postman_1_fi.png","type":"image\/png"}],"author":"Neco Giedrojc","twitter_card":"summary_large_image","twitter_creator":"@ZEISS_di","twitter_site":"@ZEISS_di","twitter_misc":{"Verfasst von":"Neco Giedrojc","Gesch\u00e4tzte Lesezeit":"5\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/mocks-in-der-testumgebung-teil-2\/","url":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/mocks-in-der-testumgebung-teil-2\/","name":"Mocks in der Testumgebung (Teil 2) - ZEISS Digital Innovation Blog","isPartOf":{"@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/mocks-in-der-testumgebung-teil-2\/#primaryimage"},"image":{"@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/mocks-in-der-testumgebung-teil-2\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2018\/06\/201806_Postman_1_fi.png","datePublished":"2018-06-19T15:21:43+00:00","dateModified":"2020-12-08T16:53:59+00:00","author":{"@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/#\/schema\/person\/636a70d9f661e239161bd72d164b9942"},"description":"Im ersten Teil wurden Grundlagen zum Mock vorgestellt. Im zweiten Teil bauen wir einen Mock auf, der unsere Rest-Service-Anwendung interaktiv testet.","breadcrumb":{"@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/mocks-in-der-testumgebung-teil-2\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blogs.zeiss.com\/digital-innovation\/de\/mocks-in-der-testumgebung-teil-2\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/mocks-in-der-testumgebung-teil-2\/#primaryimage","url":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2018\/06\/201806_Postman_1_fi.png","contentUrl":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2018\/06\/201806_Postman_1_fi.png","width":1176,"height":653},{"@type":"BreadcrumbList","@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/mocks-in-der-testumgebung-teil-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/"},{"@type":"ListItem","position":2,"name":"Mocks in der Testumgebung (Teil 2)"}]},{"@type":"WebSite","@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/#website","url":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/","name":"Digital Innovation Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Person","@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/#\/schema\/person\/636a70d9f661e239161bd72d164b9942","name":"Neco Giedrojc","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/#\/schema\/person\/image\/","url":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/05\/giedrojc_neco-scaled-e1588663640620-150x150.jpg","contentUrl":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/05\/giedrojc_neco-scaled-e1588663640620-150x150.jpg","caption":"Neco Giedrojc"},"description":"Neco Giedrojc schloss sich kurz nach seinem Studienabschluss im Bereich \u201eComputer Engineering\u201c dem Testbereich der ZEISS Digital Innovation an und arbeitet dort als Tester. Dabei befasst er sich in seinem Hauptprojekt aktuell mit dem Integrationstest komplexer Systeme.","url":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/author\/necogiedrojc\/"}]}},"author_meta":{"display_name":"Neco Giedrojc","author_link":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/author\/necogiedrojc\/"},"featured_img":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2018\/06\/201806_Postman_1_fi-600x333.png","coauthors":[],"tax_additional":{"categories":{"linked":["<a href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/category\/qualitaetssicherung\/\" class=\"advgb-post-tax-term\">Qualit\u00e4tssicherung<\/a>"],"unlinked":["<span class=\"advgb-post-tax-term\">Qualit\u00e4tssicherung<\/span>"]},"tags":{"linked":["<a href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/category\/qualitaetssicherung\/\" class=\"advgb-post-tax-term\">Testumgebung<\/a>","<a href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/category\/qualitaetssicherung\/\" class=\"advgb-post-tax-term\">Mocks<\/a>","<a href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/category\/qualitaetssicherung\/\" class=\"advgb-post-tax-term\">Moq<\/a>","<a href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/category\/qualitaetssicherung\/\" class=\"advgb-post-tax-term\">API<\/a>","<a href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/category\/qualitaetssicherung\/\" class=\"advgb-post-tax-term\">Framework-Moq<\/a>","<a href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/category\/qualitaetssicherung\/\" class=\"advgb-post-tax-term\">API-Tools<\/a>","<a href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/category\/qualitaetssicherung\/\" class=\"advgb-post-tax-term\">Postman<\/a>"],"unlinked":["<span class=\"advgb-post-tax-term\">Testumgebung<\/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>","<span class=\"advgb-post-tax-term\">Postman<\/span>"]}},"comment_count":"0","relative_dates":{"created":"Posted 8\u00a0Jahren ago","modified":"Updated 5\u00a0Jahren ago"},"absolute_dates":{"created":"Posted on Juni 19, 2018","modified":"Updated on Dezember 8, 2020"},"absolute_dates_time":{"created":"Posted on Juni 19, 2018 3:21 p.m.","modified":"Updated on Dezember 8, 2020 4:53 p.m."},"featured_img_caption":"","series_order":"","_links":{"self":[{"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-json\/wp\/v2\/posts\/318","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-json\/wp\/v2\/users\/19"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-json\/wp\/v2\/comments?post=318"}],"version-history":[{"count":9,"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-json\/wp\/v2\/posts\/318\/revisions"}],"predecessor-version":[{"id":1910,"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-json\/wp\/v2\/posts\/318\/revisions\/1910"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-json\/wp\/v2\/media\/1354"}],"wp:attachment":[{"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-json\/wp\/v2\/media?parent=318"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-json\/wp\/v2\/categories?post=318"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-json\/wp\/v2\/tags?post=318"},{"taxonomy":"topics","embeddable":true,"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-json\/wp\/v2\/topics?post=318"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}