Ich bin in Schreibgerät testen und habe ein nettes Repository-Muster/Moq, damit ich meine Funktionen testen, ohne "echte" Daten zu testen. So weit so gut .. aber ..Unit Testing Funktionen innerhalb Repository-Schnittstellen - ASP.NET MVC3 & Moq
In meiner Repository-Schnittstelle für „Beiträge“ IPostRepository
Ich habe eine Funktion: Post getPostByID(int id);
ich diese in die Lage sein will, testen von meiner Test-Klasse, kann aber nicht herausfinden, wie.
Bisher verwende ich dieses Muster für meine Tests:
[SetUp]
public void Setup()
{
mock = new Mock<IPostRepository>();
}
[Test]
public void someTest()
{
populate(10); //This populates the mock with 10 fake entries
//do test here
}
In meiner Funktion „someTest“ Ich möchte in der Lage sein GetPostById
die Funktion aufrufen/testen. Ich kann die Funktion mit mock.object.getpostbyid
finden, aber das "Objekt" ist null.
Jede Hilfe würde geschätzt :)
iPostRepository:
public interface IPostRepository
{
IQueryable<Post> Posts {get;}
void SavePost(Post post);
Post getPostByID(int id);
}
Wie erstellt 'populate (10)' die Daten? Das Erhalten einer NULL-Referenzausnahme für die 'object' -Eigenschaft des Mocks bedeutet normalerweise, dass der Mock nicht instanziiert wird, aber es sieht so aus, als ob Sie das in' [SetUp] 'tun. Es könnte sich lohnen, dafür zu sorgen, dass '[SetUp]' wie erwartet ausgeführt wird. – ataddeini
Oh, ich glaube ich verstehe jetzt - ich lese "Objekt" ist null und ich dachte, du meintest die 'Objekt'-Eigenschaft des Mock. Ich denke, Marnix hat deine Antwort – ataddeini
@ataddeini Ja, das Populat iteriert einfach und fügt dem Mock hinzu, um mich zu retten, die gleichen 10 Zeilen in jedem Testfall zu schreiben! – JustAnotherDeveloper