<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://elvis.hcw.ac.at/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=MKaufmann</id>
	<title>Elvis Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://elvis.hcw.ac.at/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=MKaufmann"/>
	<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php/Special:Contributions/MKaufmann"/>
	<updated>2026-09-10T19:18:30Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.5</generator>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=Mocking_Frameworks&amp;diff=11157</id>
		<title>Mocking Frameworks</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=Mocking_Frameworks&amp;diff=11157"/>
		<updated>2023-01-27T12:46:29Z</updated>

		<summary type="html">&lt;p&gt;MKaufmann: /* Mocking Frameworks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary == &lt;br /&gt;
&lt;br /&gt;
This document gives basic insights about Mocking and Mocking Frameworks with their usages, advantages and disadvantages. Also, some code examples showing mock testing demo using Frameworks like Mock(Python), Mockito(Java) and Moq(.NET) are also given.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* Visual Studio Code (or any other IDE)&lt;br /&gt;
* Packages (depending on the Programminglanguage and the used Framework). &amp;lt;br&amp;gt;For example: &lt;br /&gt;
**unittest.mock (Python)&lt;br /&gt;
** org.mockito.Mockito(Java) &lt;br /&gt;
** Moq(.NET)&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
=== Mocking ===&lt;br /&gt;
&lt;br /&gt;
Mocking is a process used in unit testing when unit being tested has external dependencies.It creates mock objects (also known as replacement or dummy objects) that can be used in the simulation of real objects.The main purpose of this process is isolation of code being tested rather than concentrating on the behaviour or state of external dependencies.Mocking is normally required when components under test has dependencies which has no been implemented yet or if implementation is in progress (eg:REST APIs) or when components update system state(DB calls).&lt;br /&gt;
&lt;br /&gt;
Mocking makes use of three types of replacement objects: fakes, stubs and mocks. The fakes are used when you want to test the behavior of a class that has no dependencies. The stubs are used to test the behavior of a class that has dependencies.They will return results based on specific set of inputs and won&#039;t respond to something outside of what is programmed for the test. The mocks are advanced version of stubs which can also additionally modify behaviors like how many times method should be called, with what data and in which order.&lt;br /&gt;
&lt;br /&gt;
=== Mocking Frameworks ===&lt;br /&gt;
&lt;br /&gt;
Mocking Frameworks are software libraries used to generate replacement objects like Stubs and Mocks i.e dummy implementation does not have to be written in addition to real implementation,and they also compliments Unit Testing Frameworks by isolating dependencies. But remember they are not a replacement for unit testing frameworks and they should not be used to test the actual behavior of the software. Rather they are used to simulate or mock dependencies, especially to simulate external APIs and Databases in tests.&lt;br /&gt;
&lt;br /&gt;
==== Advantages ====&lt;br /&gt;
* Tests can be isolated and thereby improving the test quality. It helps developers to write focused and concise unit tests.&lt;br /&gt;
&lt;br /&gt;
* It can also help to run tests faster and generate test data.&lt;br /&gt;
&lt;br /&gt;
* Tests can also been done in case the external Dependency is not reachable or has other kind of problems.&lt;br /&gt;
&lt;br /&gt;
==== Disadvantages ====&lt;br /&gt;
* Can lead to complex and difficult-to-understand tests if not used carefully.&lt;br /&gt;
&lt;br /&gt;
* Can also lead to writing tests that do not adequately reflect the actual behavior of the software.&lt;br /&gt;
&lt;br /&gt;
==== Frameworks in different programming languages ====&lt;br /&gt;
&lt;br /&gt;
* Mockito (Java)&lt;br /&gt;
* Moq (.NET)&lt;br /&gt;
* Mock (Python)&lt;br /&gt;
* EasyMock (Java)&lt;br /&gt;
* jMock (Java)&lt;br /&gt;
* Sinon.js(JS)&lt;br /&gt;
* pymox (Python)&lt;br /&gt;
* rr (Ruby)&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&amp;lt;!--[[File:Mock.png]]&lt;br /&gt;
[[File:Mockito.png]]&lt;br /&gt;
[[File:Moq.png]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! .NET (Moq)&lt;br /&gt;
! Java (Mockito)&lt;br /&gt;
! Python (Mock)&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c#&amp;quot;&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using Moq;&lt;br /&gt;
public interface IPerson&lt;br /&gt;
{&lt;br /&gt;
    string Greet();&lt;br /&gt;
}&lt;br /&gt;
public class Person : IPerson&lt;br /&gt;
{&lt;br /&gt;
    private string name;&lt;br /&gt;
    public Person(string lname){&lt;br /&gt;
        name=lname;&lt;br /&gt;
    }&lt;br /&gt;
    public string Greet()&lt;br /&gt;
    {&lt;br /&gt;
        return &amp;quot;Hello, my name is &amp;quot;+name;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
class Program&lt;br /&gt;
{&lt;br /&gt;
    static void Main(string[] args)&lt;br /&gt;
    {&lt;br /&gt;
        // Wir erstellen eine Instanz von IPerson&lt;br /&gt;
        IPerson person = new Person(&amp;quot;John&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        // Wir erstellen eine Mock-Instanz von IPerson&lt;br /&gt;
        var mockPerson = new Mock&amp;lt;IPerson&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
        // Wir konfigurieren die Methode Greet() der Mock-Instanz, &lt;br /&gt;
        //um immer &amp;quot;Mock greeting&amp;quot; zurückzugeben&lt;br /&gt;
        mockPerson.Setup(x =&amp;gt; x.Greet()).Returns(&amp;quot;Mock greeting&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        // Wir vergleichen die Ausgabe von Greet() von beiden&lt;br /&gt;
        Console.WriteLine(person.Greet());  &lt;br /&gt;
        // Ausgabe: &amp;quot;Hello, my name is John&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        Console.WriteLine(mockPerson.Object.Greet());  &lt;br /&gt;
        // Ausgabe: &amp;quot;Mock greeting&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import org.mockito.Mockito;&lt;br /&gt;
&lt;br /&gt;
public class Person {&lt;br /&gt;
    private String name;&lt;br /&gt;
    &lt;br /&gt;
    public Person(String name) {&lt;br /&gt;
        this.name = name;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    public String greet() {&lt;br /&gt;
        return &amp;quot;Hello, my name is &amp;quot; + this.name;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
// Wir erstellen eine Instanz von Person&lt;br /&gt;
Person person = new Person(&amp;quot;John&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Wir erstellen eine Mock-Instanz von Person&lt;br /&gt;
Person mockPerson = Mockito.mock(Person.class);&lt;br /&gt;
&lt;br /&gt;
// Wir konfigurieren die Methode greet() der Mock-Instanz, &lt;br /&gt;
// um immer &amp;quot;Mock greeting&amp;quot; zurückzugeben&lt;br /&gt;
Mockito.when(mockPerson.greet()).thenReturn(&amp;quot;Mock greeting&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Wir vergleichen die Ausgabe von greet() von beiden&lt;br /&gt;
System.out.println(person.greet());  &lt;br /&gt;
// Ausgabe: &amp;quot;Hello, my name is John&amp;quot;&lt;br /&gt;
&lt;br /&gt;
System.out.println(mockPerson.greet());  &lt;br /&gt;
// Ausgabe: &amp;quot;Mock greeting&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from unittest.mock import Mock&lt;br /&gt;
&lt;br /&gt;
class Person:&lt;br /&gt;
    def __init__(self, name):&lt;br /&gt;
        self.name = name&lt;br /&gt;
        &lt;br /&gt;
    def greet(self):&lt;br /&gt;
        return &amp;quot;Hello, my name is &amp;quot; + self.name&lt;br /&gt;
&lt;br /&gt;
# Wir erstellen eine Instanz von Person &lt;br /&gt;
person = Person(&amp;quot;John&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Wir erstellen eine Mock-Instanz von Person&lt;br /&gt;
mock_person = Mock(spec=Person)&lt;br /&gt;
&lt;br /&gt;
# Wir konfigurieren die Methode greet() der Mock-Instanz,&lt;br /&gt;
# um immer &amp;quot;Mock greeting&amp;quot; zurückzugeben&lt;br /&gt;
mock_person.greet.return_value = &amp;quot;Mock greeting&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Wir vergleichen die Ausgabe von greet()&lt;br /&gt;
print(person.greet())  &lt;br /&gt;
# Ausgabe: &amp;quot;Hello, my name is John&amp;quot;&lt;br /&gt;
&lt;br /&gt;
print(mock_person.greet())  &lt;br /&gt;
# Ausgabe: &amp;quot;Mock greeting&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Mock Demo in Python ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import unittest&lt;br /&gt;
from unittest.mock import Mock, patch&lt;br /&gt;
import requests&lt;br /&gt;
import json&lt;br /&gt;
&lt;br /&gt;
def get_users():&lt;br /&gt;
    # API-Aufruf einer Beispiel API, der Benutzerdaten abruft&lt;br /&gt;
    response = requests.get(f&amp;quot;https://gorest.co.in/public/v2/users&amp;quot;)&lt;br /&gt;
    if response.status_code == 200:&lt;br /&gt;
        return response.json()&lt;br /&gt;
    return None&lt;br /&gt;
&lt;br /&gt;
def DoesGowdaExist(users:list[dict]):&lt;br /&gt;
    # Testet ob ein Benutzer namens &amp;quot;Gowda&amp;quot; existiert&lt;br /&gt;
    for user in users:&lt;br /&gt;
        if &amp;quot;Gowda&amp;quot; in user[&amp;quot;name&amp;quot;]:&lt;br /&gt;
            return True&lt;br /&gt;
    return False&lt;br /&gt;
&lt;br /&gt;
class TestAPI(unittest.TestCase):&lt;br /&gt;
    @patch(&amp;quot;requests.get&amp;quot;)&lt;br /&gt;
    def test_get_user_data(self, mock_get):&lt;br /&gt;
        # Unittest bei dem statt der Beipiel-API ein Mock verwendet wird&lt;br /&gt;
        mock_result = [{&amp;quot;id&amp;quot;: 1, &amp;quot;name&amp;quot;: &amp;quot;Gowda&amp;quot;, &lt;br /&gt;
                        &#039;email&#039;: &#039;test@user.com&#039;, &lt;br /&gt;
                        &#039;gender&#039;: &#039;male&#039;, &#039;status&#039;: &#039;active&#039;}]&lt;br /&gt;
        # Erstelle einen Mock für die response-Variable&lt;br /&gt;
        mock_response = Mock()&lt;br /&gt;
        mock_response.status_code = 200&lt;br /&gt;
        mock_response.json.return_value = mock_result&lt;br /&gt;
&lt;br /&gt;
        # Setze den Rückgabewert des Mock-Objekts für den get-Aufruf&lt;br /&gt;
        mock_get.return_value = mock_response&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        # Rufe die get_user_data-Funktion auf&lt;br /&gt;
        users = get_users()&lt;br /&gt;
&lt;br /&gt;
        print(f&amp;quot;users: {json.dumps(users, indent=4)}&amp;quot;)&lt;br /&gt;
        # Stelle sicher, dass der Rückgabewert des Mock-Objekts zurückgegeben wurde&lt;br /&gt;
        self.assertEqual(users, mock_result)&lt;br /&gt;
        self.assertTrue(DoesGowdaExist(users),&amp;quot;Gowda does not exist&amp;quot;)&lt;br /&gt;
        print(&amp;quot;Gowda does exist&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
def main(mock:bool):&lt;br /&gt;
    # Wenn mock=False ist, wird die API aufgerufen&lt;br /&gt;
    # Wenn mock=False ist wird der Unitest ausgeführt der den Aufruf der API mit einem Mock-Objekt überschreibt&lt;br /&gt;
    if mock:&lt;br /&gt;
        unittest.main()&lt;br /&gt;
    else:&lt;br /&gt;
        users= get_users()&lt;br /&gt;
        print(f&amp;quot;users: {json.dumps(users, indent=4)} \n\n&amp;quot;)&lt;br /&gt;
        print(f&amp;quot;Gowda does {&#039;&#039; if DoesGowdaExist(users) else &#039;not &#039;}exist&amp;quot;)&lt;br /&gt;
            &lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    main(mock=True)&lt;br /&gt;
    &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* https://de.wikipedia.org/wiki/Mocking_Framework&lt;br /&gt;
* https://google.com&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;/div&gt;</summary>
		<author><name>MKaufmann</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=Mocking_Frameworks&amp;diff=11156</id>
		<title>Mocking Frameworks</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=Mocking_Frameworks&amp;diff=11156"/>
		<updated>2023-01-27T12:43:55Z</updated>

		<summary type="html">&lt;p&gt;MKaufmann: /* Requirements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary == &lt;br /&gt;
&lt;br /&gt;
This document gives basic insights about Mocking and Mocking Frameworks with their usages, advantages and disadvantages. Also, some code examples showing mock testing demo using Frameworks like Mock(Python), Mockito(Java) and Moq(.NET) are also given.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* Visual Studio Code (or any other IDE)&lt;br /&gt;
* Packages (depending on the Programminglanguage and the used Framework). &amp;lt;br&amp;gt;For example: &lt;br /&gt;
**unittest.mock (Python)&lt;br /&gt;
** org.mockito.Mockito(Java) &lt;br /&gt;
** Moq(.NET)&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
=== Mocking ===&lt;br /&gt;
&lt;br /&gt;
Mocking is a process used in unit testing when unit being tested has external dependencies.It creates mock objects (also known as replacement or dummy objects) that can be used in the simulation of real objects.The main purpose of this process is isolation of code being tested rather than concentrating on the behaviour or state of external dependencies.Mocking is normally required when components under test has dependencies which has no been implemented yet or if implementation is in progress (eg:REST APIs) or when components update system state(DB calls).&lt;br /&gt;
&lt;br /&gt;
Mocking makes use of three types of replacement objects: fakes, stubs and mocks. The fakes are used when you want to test the behavior of a class that has no dependencies. The stubs are used to test the behavior of a class that has dependencies.They will return results based on specific set of inputs and won&#039;t respond to something outside of what is programmed for the test. The mocks are advanced version of stubs which can also additionally modify behaviors like how many times method should be called, with what data and in which order.&lt;br /&gt;
&lt;br /&gt;
=== Mocking Frameworks ===&lt;br /&gt;
&lt;br /&gt;
Mocking Frameworks are software libraries used to generate replacement objects like Stubs and Mocks i.e dummy implementation does not have to be written in addition to real implementation,and they also compliments Unit Testing Frameworks by isolating dependencies. But remember they are not replacement for unit testing frameworks and they should not be used to test the actual behavior of the software. Rather they are used to simulate or mock dependencies, especially to simulate external APIs and Databases in tests.&lt;br /&gt;
&lt;br /&gt;
==== Advantages ====&lt;br /&gt;
* Tests can be isolated and thereby improving the test quality. It helps developers to write focused and concise unit tests.&lt;br /&gt;
&lt;br /&gt;
* It can also help to run tests faster and generate test data.&lt;br /&gt;
&lt;br /&gt;
==== Disadvantages ====&lt;br /&gt;
* Can lead to complex and difficult-to-understand tests if not used carefully.&lt;br /&gt;
&lt;br /&gt;
* Can also lead to writing tests that do not adequately reflect the actual behavior of the software.&lt;br /&gt;
&lt;br /&gt;
==== Frameworks in different programming languages ====&lt;br /&gt;
&lt;br /&gt;
* Mockito (Java)&lt;br /&gt;
* Moq (.NET)&lt;br /&gt;
* Mock (Python)&lt;br /&gt;
* EasyMock (Java)&lt;br /&gt;
* jMock (Java)&lt;br /&gt;
* Sinon.js(JS)&lt;br /&gt;
* pymox (Python)&lt;br /&gt;
* rr (Ruby)&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&amp;lt;!--[[File:Mock.png]]&lt;br /&gt;
[[File:Mockito.png]]&lt;br /&gt;
[[File:Moq.png]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! .NET (Moq)&lt;br /&gt;
! Java (Mockito)&lt;br /&gt;
! Python (Mock)&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c#&amp;quot;&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using Moq;&lt;br /&gt;
public interface IPerson&lt;br /&gt;
{&lt;br /&gt;
    string Greet();&lt;br /&gt;
}&lt;br /&gt;
public class Person : IPerson&lt;br /&gt;
{&lt;br /&gt;
    private string name;&lt;br /&gt;
    public Person(string lname){&lt;br /&gt;
        name=lname;&lt;br /&gt;
    }&lt;br /&gt;
    public string Greet()&lt;br /&gt;
    {&lt;br /&gt;
        return &amp;quot;Hello, my name is &amp;quot;+name;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
class Program&lt;br /&gt;
{&lt;br /&gt;
    static void Main(string[] args)&lt;br /&gt;
    {&lt;br /&gt;
        // Wir erstellen eine Instanz von IPerson&lt;br /&gt;
        IPerson person = new Person(&amp;quot;John&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        // Wir erstellen eine Mock-Instanz von IPerson&lt;br /&gt;
        var mockPerson = new Mock&amp;lt;IPerson&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
        // Wir konfigurieren die Methode Greet() der Mock-Instanz, &lt;br /&gt;
        //um immer &amp;quot;Mock greeting&amp;quot; zurückzugeben&lt;br /&gt;
        mockPerson.Setup(x =&amp;gt; x.Greet()).Returns(&amp;quot;Mock greeting&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        // Wir vergleichen die Ausgabe von Greet() von beiden&lt;br /&gt;
        Console.WriteLine(person.Greet());  &lt;br /&gt;
        // Ausgabe: &amp;quot;Hello, my name is John&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        Console.WriteLine(mockPerson.Object.Greet());  &lt;br /&gt;
        // Ausgabe: &amp;quot;Mock greeting&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import org.mockito.Mockito;&lt;br /&gt;
&lt;br /&gt;
public class Person {&lt;br /&gt;
    private String name;&lt;br /&gt;
    &lt;br /&gt;
    public Person(String name) {&lt;br /&gt;
        this.name = name;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    public String greet() {&lt;br /&gt;
        return &amp;quot;Hello, my name is &amp;quot; + this.name;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
// Wir erstellen eine Instanz von Person&lt;br /&gt;
Person person = new Person(&amp;quot;John&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Wir erstellen eine Mock-Instanz von Person&lt;br /&gt;
Person mockPerson = Mockito.mock(Person.class);&lt;br /&gt;
&lt;br /&gt;
// Wir konfigurieren die Methode greet() der Mock-Instanz, &lt;br /&gt;
// um immer &amp;quot;Mock greeting&amp;quot; zurückzugeben&lt;br /&gt;
Mockito.when(mockPerson.greet()).thenReturn(&amp;quot;Mock greeting&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Wir vergleichen die Ausgabe von greet() von beiden&lt;br /&gt;
System.out.println(person.greet());  &lt;br /&gt;
// Ausgabe: &amp;quot;Hello, my name is John&amp;quot;&lt;br /&gt;
&lt;br /&gt;
System.out.println(mockPerson.greet());  &lt;br /&gt;
// Ausgabe: &amp;quot;Mock greeting&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from unittest.mock import Mock&lt;br /&gt;
&lt;br /&gt;
class Person:&lt;br /&gt;
    def __init__(self, name):&lt;br /&gt;
        self.name = name&lt;br /&gt;
        &lt;br /&gt;
    def greet(self):&lt;br /&gt;
        return &amp;quot;Hello, my name is &amp;quot; + self.name&lt;br /&gt;
&lt;br /&gt;
# Wir erstellen eine Instanz von Person &lt;br /&gt;
person = Person(&amp;quot;John&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Wir erstellen eine Mock-Instanz von Person&lt;br /&gt;
mock_person = Mock(spec=Person)&lt;br /&gt;
&lt;br /&gt;
# Wir konfigurieren die Methode greet() der Mock-Instanz,&lt;br /&gt;
# um immer &amp;quot;Mock greeting&amp;quot; zurückzugeben&lt;br /&gt;
mock_person.greet.return_value = &amp;quot;Mock greeting&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Wir vergleichen die Ausgabe von greet()&lt;br /&gt;
print(person.greet())  &lt;br /&gt;
# Ausgabe: &amp;quot;Hello, my name is John&amp;quot;&lt;br /&gt;
&lt;br /&gt;
print(mock_person.greet())  &lt;br /&gt;
# Ausgabe: &amp;quot;Mock greeting&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Mock Demo in Python ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import unittest&lt;br /&gt;
from unittest.mock import Mock, patch&lt;br /&gt;
import requests&lt;br /&gt;
import json&lt;br /&gt;
&lt;br /&gt;
def get_users():&lt;br /&gt;
    # API-Aufruf einer Beispiel API, der Benutzerdaten abruft&lt;br /&gt;
    response = requests.get(f&amp;quot;https://gorest.co.in/public/v2/users&amp;quot;)&lt;br /&gt;
    if response.status_code == 200:&lt;br /&gt;
        return response.json()&lt;br /&gt;
    return None&lt;br /&gt;
&lt;br /&gt;
def DoesGowdaExist(users:list[dict]):&lt;br /&gt;
    # Testet ob ein Benutzer namens &amp;quot;Gowda&amp;quot; existiert&lt;br /&gt;
    for user in users:&lt;br /&gt;
        if &amp;quot;Gowda&amp;quot; in user[&amp;quot;name&amp;quot;]:&lt;br /&gt;
            return True&lt;br /&gt;
    return False&lt;br /&gt;
&lt;br /&gt;
class TestAPI(unittest.TestCase):&lt;br /&gt;
    @patch(&amp;quot;requests.get&amp;quot;)&lt;br /&gt;
    def test_get_user_data(self, mock_get):&lt;br /&gt;
        # Unittest bei dem statt der Beipiel-API ein Mock verwendet wird&lt;br /&gt;
        mock_result = [{&amp;quot;id&amp;quot;: 1, &amp;quot;name&amp;quot;: &amp;quot;Gowda&amp;quot;, &lt;br /&gt;
                        &#039;email&#039;: &#039;test@user.com&#039;, &lt;br /&gt;
                        &#039;gender&#039;: &#039;male&#039;, &#039;status&#039;: &#039;active&#039;}]&lt;br /&gt;
        # Erstelle einen Mock für die response-Variable&lt;br /&gt;
        mock_response = Mock()&lt;br /&gt;
        mock_response.status_code = 200&lt;br /&gt;
        mock_response.json.return_value = mock_result&lt;br /&gt;
&lt;br /&gt;
        # Setze den Rückgabewert des Mock-Objekts für den get-Aufruf&lt;br /&gt;
        mock_get.return_value = mock_response&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        # Rufe die get_user_data-Funktion auf&lt;br /&gt;
        users = get_users()&lt;br /&gt;
&lt;br /&gt;
        print(f&amp;quot;users: {json.dumps(users, indent=4)}&amp;quot;)&lt;br /&gt;
        # Stelle sicher, dass der Rückgabewert des Mock-Objekts zurückgegeben wurde&lt;br /&gt;
        self.assertEqual(users, mock_result)&lt;br /&gt;
        self.assertTrue(DoesGowdaExist(users),&amp;quot;Gowda does not exist&amp;quot;)&lt;br /&gt;
        print(&amp;quot;Gowda does exist&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
def main(mock:bool):&lt;br /&gt;
    # Wenn mock=False ist, wird die API aufgerufen&lt;br /&gt;
    # Wenn mock=False ist wird der Unitest ausgeführt der den Aufruf der API mit einem Mock-Objekt überschreibt&lt;br /&gt;
    if mock:&lt;br /&gt;
        unittest.main()&lt;br /&gt;
    else:&lt;br /&gt;
        users= get_users()&lt;br /&gt;
        print(f&amp;quot;users: {json.dumps(users, indent=4)} \n\n&amp;quot;)&lt;br /&gt;
        print(f&amp;quot;Gowda does {&#039;&#039; if DoesGowdaExist(users) else &#039;not &#039;}exist&amp;quot;)&lt;br /&gt;
            &lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    main(mock=True)&lt;br /&gt;
    &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* https://de.wikipedia.org/wiki/Mocking_Framework&lt;br /&gt;
* https://google.com&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;/div&gt;</summary>
		<author><name>MKaufmann</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=Mocking_Frameworks&amp;diff=11155</id>
		<title>Mocking Frameworks</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=Mocking_Frameworks&amp;diff=11155"/>
		<updated>2023-01-27T12:41:32Z</updated>

		<summary type="html">&lt;p&gt;MKaufmann: Code Examples of different Frameworks&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary == &lt;br /&gt;
&lt;br /&gt;
This document gives basic insights about Mocking and Mocking Frameworks with their usages, advantages and disadvantages. Also, some code examples showing mock testing demo using Frameworks like Mock(Python), Mockito(Java) and Moq(.NET) are also given.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* Visual Studio Code&lt;br /&gt;
* Packages: unittest.mock (Python), org.mockito.Mockito(Java) and Moq(.NET)&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
=== Mocking ===&lt;br /&gt;
&lt;br /&gt;
Mocking is a process used in unit testing when unit being tested has external dependencies.It creates mock objects (also known as replacement or dummy objects) that can be used in the simulation of real objects.The main purpose of this process is isolation of code being tested rather than concentrating on the behaviour or state of external dependencies.Mocking is normally required when components under test has dependencies which has no been implemented yet or if implementation is in progress (eg:REST APIs) or when components update system state(DB calls).&lt;br /&gt;
&lt;br /&gt;
Mocking makes use of three types of replacement objects: fakes, stubs and mocks. The fakes are used when you want to test the behavior of a class that has no dependencies. The stubs are used to test the behavior of a class that has dependencies.They will return results based on specific set of inputs and won&#039;t respond to something outside of what is programmed for the test. The mocks are advanced version of stubs which can also additionally modify behaviors like how many times method should be called, with what data and in which order.&lt;br /&gt;
&lt;br /&gt;
=== Mocking Frameworks ===&lt;br /&gt;
&lt;br /&gt;
Mocking Frameworks are software libraries used to generate replacement objects like Stubs and Mocks i.e dummy implementation does not have to be written in addition to real implementation,and they also compliments Unit Testing Frameworks by isolating dependencies. But remember they are not replacement for unit testing frameworks and they should not be used to test the actual behavior of the software. Rather they are used to simulate or mock dependencies, especially to simulate external APIs and Databases in tests.&lt;br /&gt;
&lt;br /&gt;
==== Advantages ====&lt;br /&gt;
* Tests can be isolated and thereby improving the test quality. It helps developers to write focused and concise unit tests.&lt;br /&gt;
&lt;br /&gt;
* It can also help to run tests faster and generate test data.&lt;br /&gt;
&lt;br /&gt;
==== Disadvantages ====&lt;br /&gt;
* Can lead to complex and difficult-to-understand tests if not used carefully.&lt;br /&gt;
&lt;br /&gt;
* Can also lead to writing tests that do not adequately reflect the actual behavior of the software.&lt;br /&gt;
&lt;br /&gt;
==== Frameworks in different programming languages ====&lt;br /&gt;
&lt;br /&gt;
* Mockito (Java)&lt;br /&gt;
* Moq (.NET)&lt;br /&gt;
* Mock (Python)&lt;br /&gt;
* EasyMock (Java)&lt;br /&gt;
* jMock (Java)&lt;br /&gt;
* Sinon.js(JS)&lt;br /&gt;
* pymox (Python)&lt;br /&gt;
* rr (Ruby)&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&amp;lt;!--[[File:Mock.png]]&lt;br /&gt;
[[File:Mockito.png]]&lt;br /&gt;
[[File:Moq.png]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! .NET (Moq)&lt;br /&gt;
! Java (Mockito)&lt;br /&gt;
! Python (Mock)&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c#&amp;quot;&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using Moq;&lt;br /&gt;
public interface IPerson&lt;br /&gt;
{&lt;br /&gt;
    string Greet();&lt;br /&gt;
}&lt;br /&gt;
public class Person : IPerson&lt;br /&gt;
{&lt;br /&gt;
    private string name;&lt;br /&gt;
    public Person(string lname){&lt;br /&gt;
        name=lname;&lt;br /&gt;
    }&lt;br /&gt;
    public string Greet()&lt;br /&gt;
    {&lt;br /&gt;
        return &amp;quot;Hello, my name is &amp;quot;+name;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
class Program&lt;br /&gt;
{&lt;br /&gt;
    static void Main(string[] args)&lt;br /&gt;
    {&lt;br /&gt;
        // Wir erstellen eine Instanz von IPerson&lt;br /&gt;
        IPerson person = new Person(&amp;quot;John&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        // Wir erstellen eine Mock-Instanz von IPerson&lt;br /&gt;
        var mockPerson = new Mock&amp;lt;IPerson&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
        // Wir konfigurieren die Methode Greet() der Mock-Instanz, &lt;br /&gt;
        //um immer &amp;quot;Mock greeting&amp;quot; zurückzugeben&lt;br /&gt;
        mockPerson.Setup(x =&amp;gt; x.Greet()).Returns(&amp;quot;Mock greeting&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        // Wir vergleichen die Ausgabe von Greet() von beiden&lt;br /&gt;
        Console.WriteLine(person.Greet());  &lt;br /&gt;
        // Ausgabe: &amp;quot;Hello, my name is John&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        Console.WriteLine(mockPerson.Object.Greet());  &lt;br /&gt;
        // Ausgabe: &amp;quot;Mock greeting&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import org.mockito.Mockito;&lt;br /&gt;
&lt;br /&gt;
public class Person {&lt;br /&gt;
    private String name;&lt;br /&gt;
    &lt;br /&gt;
    public Person(String name) {&lt;br /&gt;
        this.name = name;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    public String greet() {&lt;br /&gt;
        return &amp;quot;Hello, my name is &amp;quot; + this.name;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
// Wir erstellen eine Instanz von Person&lt;br /&gt;
Person person = new Person(&amp;quot;John&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Wir erstellen eine Mock-Instanz von Person&lt;br /&gt;
Person mockPerson = Mockito.mock(Person.class);&lt;br /&gt;
&lt;br /&gt;
// Wir konfigurieren die Methode greet() der Mock-Instanz, &lt;br /&gt;
// um immer &amp;quot;Mock greeting&amp;quot; zurückzugeben&lt;br /&gt;
Mockito.when(mockPerson.greet()).thenReturn(&amp;quot;Mock greeting&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Wir vergleichen die Ausgabe von greet() von beiden&lt;br /&gt;
System.out.println(person.greet());  &lt;br /&gt;
// Ausgabe: &amp;quot;Hello, my name is John&amp;quot;&lt;br /&gt;
&lt;br /&gt;
System.out.println(mockPerson.greet());  &lt;br /&gt;
// Ausgabe: &amp;quot;Mock greeting&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from unittest.mock import Mock&lt;br /&gt;
&lt;br /&gt;
class Person:&lt;br /&gt;
    def __init__(self, name):&lt;br /&gt;
        self.name = name&lt;br /&gt;
        &lt;br /&gt;
    def greet(self):&lt;br /&gt;
        return &amp;quot;Hello, my name is &amp;quot; + self.name&lt;br /&gt;
&lt;br /&gt;
# Wir erstellen eine Instanz von Person &lt;br /&gt;
person = Person(&amp;quot;John&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Wir erstellen eine Mock-Instanz von Person&lt;br /&gt;
mock_person = Mock(spec=Person)&lt;br /&gt;
&lt;br /&gt;
# Wir konfigurieren die Methode greet() der Mock-Instanz,&lt;br /&gt;
# um immer &amp;quot;Mock greeting&amp;quot; zurückzugeben&lt;br /&gt;
mock_person.greet.return_value = &amp;quot;Mock greeting&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Wir vergleichen die Ausgabe von greet()&lt;br /&gt;
print(person.greet())  &lt;br /&gt;
# Ausgabe: &amp;quot;Hello, my name is John&amp;quot;&lt;br /&gt;
&lt;br /&gt;
print(mock_person.greet())  &lt;br /&gt;
# Ausgabe: &amp;quot;Mock greeting&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Mock Demo in Python ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import unittest&lt;br /&gt;
from unittest.mock import Mock, patch&lt;br /&gt;
import requests&lt;br /&gt;
import json&lt;br /&gt;
&lt;br /&gt;
def get_users():&lt;br /&gt;
    # API-Aufruf einer Beispiel API, der Benutzerdaten abruft&lt;br /&gt;
    response = requests.get(f&amp;quot;https://gorest.co.in/public/v2/users&amp;quot;)&lt;br /&gt;
    if response.status_code == 200:&lt;br /&gt;
        return response.json()&lt;br /&gt;
    return None&lt;br /&gt;
&lt;br /&gt;
def DoesGowdaExist(users:list[dict]):&lt;br /&gt;
    # Testet ob ein Benutzer namens &amp;quot;Gowda&amp;quot; existiert&lt;br /&gt;
    for user in users:&lt;br /&gt;
        if &amp;quot;Gowda&amp;quot; in user[&amp;quot;name&amp;quot;]:&lt;br /&gt;
            return True&lt;br /&gt;
    return False&lt;br /&gt;
&lt;br /&gt;
class TestAPI(unittest.TestCase):&lt;br /&gt;
    @patch(&amp;quot;requests.get&amp;quot;)&lt;br /&gt;
    def test_get_user_data(self, mock_get):&lt;br /&gt;
        # Unittest bei dem statt der Beipiel-API ein Mock verwendet wird&lt;br /&gt;
        mock_result = [{&amp;quot;id&amp;quot;: 1, &amp;quot;name&amp;quot;: &amp;quot;Gowda&amp;quot;, &lt;br /&gt;
                        &#039;email&#039;: &#039;test@user.com&#039;, &lt;br /&gt;
                        &#039;gender&#039;: &#039;male&#039;, &#039;status&#039;: &#039;active&#039;}]&lt;br /&gt;
        # Erstelle einen Mock für die response-Variable&lt;br /&gt;
        mock_response = Mock()&lt;br /&gt;
        mock_response.status_code = 200&lt;br /&gt;
        mock_response.json.return_value = mock_result&lt;br /&gt;
&lt;br /&gt;
        # Setze den Rückgabewert des Mock-Objekts für den get-Aufruf&lt;br /&gt;
        mock_get.return_value = mock_response&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        # Rufe die get_user_data-Funktion auf&lt;br /&gt;
        users = get_users()&lt;br /&gt;
&lt;br /&gt;
        print(f&amp;quot;users: {json.dumps(users, indent=4)}&amp;quot;)&lt;br /&gt;
        # Stelle sicher, dass der Rückgabewert des Mock-Objekts zurückgegeben wurde&lt;br /&gt;
        self.assertEqual(users, mock_result)&lt;br /&gt;
        self.assertTrue(DoesGowdaExist(users),&amp;quot;Gowda does not exist&amp;quot;)&lt;br /&gt;
        print(&amp;quot;Gowda does exist&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
def main(mock:bool):&lt;br /&gt;
    # Wenn mock=False ist, wird die API aufgerufen&lt;br /&gt;
    # Wenn mock=False ist wird der Unitest ausgeführt der den Aufruf der API mit einem Mock-Objekt überschreibt&lt;br /&gt;
    if mock:&lt;br /&gt;
        unittest.main()&lt;br /&gt;
    else:&lt;br /&gt;
        users= get_users()&lt;br /&gt;
        print(f&amp;quot;users: {json.dumps(users, indent=4)} \n\n&amp;quot;)&lt;br /&gt;
        print(f&amp;quot;Gowda does {&#039;&#039; if DoesGowdaExist(users) else &#039;not &#039;}exist&amp;quot;)&lt;br /&gt;
            &lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    main(mock=True)&lt;br /&gt;
    &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* https://de.wikipedia.org/wiki/Mocking_Framework&lt;br /&gt;
* https://google.com&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;/div&gt;</summary>
		<author><name>MKaufmann</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=Mocking_Frameworks&amp;diff=11154</id>
		<title>Mocking Frameworks</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=Mocking_Frameworks&amp;diff=11154"/>
		<updated>2023-01-27T12:33:16Z</updated>

		<summary type="html">&lt;p&gt;MKaufmann: /* Mock Demo in Python */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary == &lt;br /&gt;
&lt;br /&gt;
This document gives basic insights about Mocking and Mocking Frameworks with their usages, advantages and disadvantages. Also, some code examples showing mock testing demo using Frameworks like Mock(Python), Mockito(Java) and Moq(.NET) are also given.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* Visual Studio Code&lt;br /&gt;
* Packages: unittest.mock (Python), org.mockito.Mockito(Java) and Moq(.NET)&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
=== Mocking ===&lt;br /&gt;
&lt;br /&gt;
Mocking is a process used in unit testing when unit being tested has external dependencies.It creates mock objects (also known as replacement or dummy objects) that can be used in the simulation of real objects.The main purpose of this process is isolation of code being tested rather than concentrating on the behaviour or state of external dependencies.Mocking is normally required when components under test has dependencies which has no been implemented yet or if implementation is in progress (eg:REST APIs) or when components update system state(DB calls).&lt;br /&gt;
&lt;br /&gt;
Mocking makes use of three types of replacement objects: fakes, stubs and mocks. The fakes are used when you want to test the behavior of a class that has no dependencies. The stubs are used to test the behavior of a class that has dependencies.They will return results based on specific set of inputs and won&#039;t respond to something outside of what is programmed for the test. The mocks are advanced version of stubs which can also additionally modify behaviors like how many times method should be called, with what data and in which order.&lt;br /&gt;
&lt;br /&gt;
=== Mocking Frameworks ===&lt;br /&gt;
&lt;br /&gt;
Mocking Frameworks are software libraries used to generate replacement objects like Stubs and Mocks i.e dummy implementation does not have to be written in addition to real implementation,and they also compliments Unit Testing Frameworks by isolating dependencies. But remember they are not replacement for unit testing frameworks and they should not be used to test the actual behavior of the software. Rather they are used to simulate or mock dependencies, especially to simulate external APIs and Databases in tests.&lt;br /&gt;
&lt;br /&gt;
==== Advantages ====&lt;br /&gt;
* Tests can be isolated and thereby improving the test quality. It helps developers to write focused and concise unit tests.&lt;br /&gt;
&lt;br /&gt;
* It can also help to run tests faster and generate test data.&lt;br /&gt;
&lt;br /&gt;
==== Disadvantages ====&lt;br /&gt;
* Can lead to complex and difficult-to-understand tests if not used carefully.&lt;br /&gt;
&lt;br /&gt;
* Can also lead to writing tests that do not adequately reflect the actual behavior of the software.&lt;br /&gt;
&lt;br /&gt;
==== Frameworks in different programming languages ====&lt;br /&gt;
&lt;br /&gt;
* Mockito (Java)&lt;br /&gt;
* Moq (.NET)&lt;br /&gt;
* Mock (Python)&lt;br /&gt;
* EasyMock (Java)&lt;br /&gt;
* jMock (Java)&lt;br /&gt;
* Sinon.js(JS)&lt;br /&gt;
* pymox (Python)&lt;br /&gt;
* rr (Ruby)&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
[[File:Mock.png]]&lt;br /&gt;
[[File:Mockito.png]]&lt;br /&gt;
[[File:Moq.png]]&lt;br /&gt;
&lt;br /&gt;
==== Mock Demo in Python ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import unittest&lt;br /&gt;
from unittest.mock import Mock, patch&lt;br /&gt;
import requests&lt;br /&gt;
import json&lt;br /&gt;
&lt;br /&gt;
def get_users():&lt;br /&gt;
    # API-Aufruf einer Beispiel API, der Benutzerdaten abruft&lt;br /&gt;
    response = requests.get(f&amp;quot;https://gorest.co.in/public/v2/users&amp;quot;)&lt;br /&gt;
    if response.status_code == 200:&lt;br /&gt;
        return response.json()&lt;br /&gt;
    return None&lt;br /&gt;
&lt;br /&gt;
def DoesGowdaExist(users:list[dict]):&lt;br /&gt;
    # Testet ob ein Benutzer namens &amp;quot;Gowda&amp;quot; existiert&lt;br /&gt;
    for user in users:&lt;br /&gt;
        if &amp;quot;Gowda&amp;quot; in user[&amp;quot;name&amp;quot;]:&lt;br /&gt;
            return True&lt;br /&gt;
    return False&lt;br /&gt;
&lt;br /&gt;
class TestAPI(unittest.TestCase):&lt;br /&gt;
    @patch(&amp;quot;requests.get&amp;quot;)&lt;br /&gt;
    def test_get_user_data(self, mock_get):&lt;br /&gt;
        # Unittest bei dem statt der Beipiel-API ein Mock verwendet wird&lt;br /&gt;
        mock_result = [{&amp;quot;id&amp;quot;: 1, &amp;quot;name&amp;quot;: &amp;quot;Gowda&amp;quot;, &lt;br /&gt;
                        &#039;email&#039;: &#039;test@user.com&#039;, &lt;br /&gt;
                        &#039;gender&#039;: &#039;male&#039;, &#039;status&#039;: &#039;active&#039;}]&lt;br /&gt;
        # Erstelle einen Mock für die response-Variable&lt;br /&gt;
        mock_response = Mock()&lt;br /&gt;
        mock_response.status_code = 200&lt;br /&gt;
        mock_response.json.return_value = mock_result&lt;br /&gt;
&lt;br /&gt;
        # Setze den Rückgabewert des Mock-Objekts für den get-Aufruf&lt;br /&gt;
        mock_get.return_value = mock_response&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        # Rufe die get_user_data-Funktion auf&lt;br /&gt;
        users = get_users()&lt;br /&gt;
&lt;br /&gt;
        print(f&amp;quot;users: {json.dumps(users, indent=4)}&amp;quot;)&lt;br /&gt;
        # Stelle sicher, dass der Rückgabewert des Mock-Objekts zurückgegeben wurde&lt;br /&gt;
        self.assertEqual(users, mock_result)&lt;br /&gt;
        self.assertTrue(DoesGowdaExist(users),&amp;quot;Gowda does not exist&amp;quot;)&lt;br /&gt;
        print(&amp;quot;Gowda does exist&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
def main(mock:bool):&lt;br /&gt;
    # Wenn mock=False ist, wird die API aufgerufen&lt;br /&gt;
    # Wenn mock=False ist wird der Unitest ausgeführt der den Aufruf der API mit einem Mock-Objekt überschreibt&lt;br /&gt;
    if mock:&lt;br /&gt;
        unittest.main()&lt;br /&gt;
    else:&lt;br /&gt;
        users= get_users()&lt;br /&gt;
        print(f&amp;quot;users: {json.dumps(users, indent=4)} \n\n&amp;quot;)&lt;br /&gt;
        print(f&amp;quot;Gowda does {&#039;&#039; if DoesGowdaExist(users) else &#039;not &#039;}exist&amp;quot;)&lt;br /&gt;
            &lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    main(mock=True)&lt;br /&gt;
    &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* https://de.wikipedia.org/wiki/Mocking_Framework&lt;br /&gt;
* https://google.com&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;/div&gt;</summary>
		<author><name>MKaufmann</name></author>
	</entry>
</feed>