moq ist eine freie (BSD-Lizenz) Programmbibliothek zum Erstellen von Mock-Objekten für Unit-Tests in .NET-Programmiersprachen.

moq
Basisdaten

Aktuelle Version 4.16.0[1]
Programmier­sprache .NET Framework
Kategorie Test-Framework
Lizenz BSD-Lizenz
https://github.com/moq/moq4#moq

Geschichte

Bearbeiten

moq wurde ursprünglich von Clarius, Manas und InSTEDD entwickelt.[2]

Die Entwickler mit den meisten Commits nennen sich Jeremy Meng, stakx und Daniel Cazzulino.[3]

Verwendung

Bearbeiten

Das q anstelle von ck im Namen soll auf die Möglichkeit hinweisen, Mock-Objekte mit einer an LINQ orientierten Syntax zu konfigurieren[4]. Alternativ dazu stehen auch Setup-Methoden zur Verfügung. Beide Konfigurationsmöglichkeiten arbeiten mit Lambda-Funktionen.

moq kann sowohl mit Interfaces als auch mit Klassen verwendet werden, z. B. für .NET-Framework-Objekte beim Unit-Testen von ASP.NET-MVC-Anwendungen.[5]

Beispiel

Bearbeiten

Ein Mock-Object für das fiktive Interface IVersion wird nach Konfiguration eines Methodenaufrufs mit Parameter- und Rückgabewert auf Zustand und Verhalten getestet.

// Setup mock for notional IVersion interface
IVersion version = Mock.Of<IVersion>(x => x.Exists("4.7.142") == true);
// Assert the returned state
Assert.IsTrue(version.Exists("4.7.142"));
// Optionally verify mock interaction
Mock.Get(version).Verify(x => x.Exists("4.7.142"), Times.Exactly(1));

Dieses Beispiel wurde in C# programmiert und mit Visual Studio 2015 überprüft.

Verbreitung

Bearbeiten

moq wurde seit dem 9. Februar 2011 mehr als 126 Millionen Mal als NuGet-Paket heruntergeladen.[6]

Siehe auch

Bearbeiten
Bearbeiten

Einzelnachweise

Bearbeiten
  1. github.com.
  2. README.md Who? (Englisch), abgerufen am 27. September 2017
  3. Github contributors (Englisch), abgerufen am 27. September 2017
  4. Daniel Cazzulino's Blog: Linq to Mocks is finally born (Memento des Originals vom 24. September 2017 im Internet Archive)  Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/blogs.clariusconsulting.net (Englisch), abgerufen am 27. September 2017
  5. Peter Vogel: Ensure Consistent Testing with Mock Objects and Moq, Visual Studio Magazine (Englisch), abgerufen am 27. September 2017
  6. NuGet Packages Gallery (Englisch), abgerufen am 25. August 2020