Wie erstellen Sie einen stub mit Moq
Wie kann ich creat ein reines stub über Moq? Mit Rhino Mocks habe ich es wie folgt:
[TestFixture]
public class UrlHelperAssetExtensionsTests
{
private HttpContextBase httpContextBaseStub;
private RequestContext requestContext;
private UrlHelper urlHelper;
private string stylesheetPath = "/Assets/Stylesheets/{0}";
[SetUp]
public void SetUp()
{
httpContextBaseStub = MockRepository.GenerateStub<HttpContextBase>();
requestContext = new RequestContext(httpContextBaseStub, new RouteData());
urlHelper = new UrlHelper(requestContext);
}
[Test]
public void PbeStylesheet_should_return_correct_path_of_stylesheet()
{
//Arrange
string expected = stylesheetPath.FormatWith("stylesheet.css");
//Act
string actual = urlHelper.PbeStylesheet();
//Assert
Assert.AreEqual(expected, actual);
}
}
Wie würde ich erstellen Sie einen stub für MockRepository.GenerateStub<HttpContextBase>();
über Moq? Oder soll ich einfach bleiben mit Rhino Mocks?
InformationsquelleAutor Brendan Vogt | 2011-11-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist mein Vorschlag für Sie:
Dann müssen Sie die setup.
Weitere Informationen finden Sie unter homepage der MOQ-Projekt.
Sie müssen installieren Sie es auf diese Weise, Ihre Klasse unter test braucht. Es kommt auf die unit-test, den Sie ausführen möchten. Sie können sagen, dass es im Allgemeinen.
Ich habe aktualisiert mein test. Bitte überprüfen 🙂
Leider ist Ihr Beispiel gibt mir keine Informationen, was Ihre Klasse unter test (UrlHelper) braucht. Spott ist keine "blackbox-Funktion" konfigurieren Sie die Modelle in einer Art und Weise, so dass Ihre Klasse unter test-Griff mit einer speziellen situation, oder so ähnlich.
Sie analysieren die helper-Methode. Dann werden Sie sehen, ein paar unit-test geschrieben werden. (Für den Normalfall und für Sonderfälle). Für jedes dieser unit-tests benötigen Sie eine spezielle Einrichtung für dein zu spotten. Aber das hängt von der code von der helper-Klasse, die Sie testen. Ich kann nicht geben Sie ein setup für alle Zwecke!
InformationsquelleAutor Fischermaen
Ein wenig spät zur party hier, aber es gibt immer noch keine ausreichende Antwort hier, meiner Meinung nach.
Moq nicht explizite stub-und mock-generation in der gleichen Weise, RhinoMocks nicht. Stattdessen werden alle setup Aufrufe, z.B.
mockObject.Setup(x => blah ...)
erstellen Sie einen stub.Allerdings, wenn Sie möchten, dass der gleiche code behandelt werden, als ein mock, müssen Sie rufen Sie
mockObject.Verify(x => blah ...)
zu behaupten, dass das setup lief wie erwartet.Wenn Sie anrufen
mockObject.VerifyAll()
es behandelt alles, was Sie eingerichtet haben, als verspottet und dies ist unwahrscheinlich, dass die Verhaltensweisen, die Sie wünschen, D. H. alle stubs behandelt, als verspottet.Statt, bei der Einrichtung des mock verwenden Sie die
mockObject.Setup(x => blah ...).Verifiable()
Methode zu markieren, das setup explizit als mock. Dann rufen SiemockObject.Verify()
- dies nur dann behauptet die setups, die markiert wurden mitVerifiable()
.InformationsquelleAutor Digbyswift
Die Namensgebung bezieht sich auf die Art und Weise Sie dieses Objekt verwenden. Also, wenn Sie nicht überprüfen Sie alles auf diese Objekte ist ein stub, wenn man so will - es ist ein Schein.
InformationsquelleAutor Myles McDonnell