Mocking Framework
# Mocking Framework

In der Software-Entwicklung werden bei Modultests häufig sogenannte Mock-Objekte zur Isolation einer Komponente im Testlauf verwendet. Damit neben der echten Implementierung nicht zusätzlich noch eine Dummy-Implementierung geschrieben werden muss, kann ein Mocking-Framework eingesetzt werden. Dieses vereinfacht die Aufgabe, bestimmte zum Test benötigten Elemente, die aber selbst nicht getestet werden sollen, vorzutäuschen (zu „mocken“).

## Funktionsweise

* Record: Das Mocking-Framework nimmt das zu liefernde Verhalten auf.
* Replay: Im Testlauf spielt das Mocking-Framework das Verhalten ab.
* Verify: Nach dem Test überprüft das Mocking-Framework, ob das aufgenommene Verhalten dem Verhalten im Test entsprochen hat.

## Über das Testen hinaus

Ein Mocking-Framework kann sehr detailliert beschreiben, wie ein Software-Modul von innen funktionieren soll. Damit lassen sich Tests hervorragend dafür nutzen, Spezifikationen zu definieren. Der Vorteil dabei ist, dass Code nicht (falsch) interpretiert werden kann, wohingegen eine in Worte gefasste Spezifikation durchaus Interpretations-Spielraum lässt.

## Mocking-Frameworks (Auswahl)

### JavaScript

* Sinon.JS
* jQuery Mockjax

### .Net-Framework

* Rhino Mocks
* moq
* NSubstitute
* FakeItEasy
* Simple Mocking
* Microsoft Fakes

### C

* cmocka
* cmockery
* hammocking

### C++

* Google Test (vormals Google C++ Mocking Framework)
* Hippomocks

### Java

* Mockito
* JMockit
* Easymock
* PowerMock

### Ruby

* rr
* RSpec-Spies

### Python

* Mock
* pymox
* dingus

### ABAP

* mockA

### Delphi

* Delphi-Mocks
