mam szydzili metoda, która wygląda następująco:Wywoływanie Func przekazany jako parametr do mock wykorzystaniem Min i C#
class NotMineClass {
T Execute(Func operation)
{
// do something
return operation();
}
}
W moim kodu, mam takie jak:
public MyType MyMethod()
{
MyType object = new MyType();
bool success = notMineClassInstance.Execute(() =>
{
// some things
retVal = injectedObject1.method();
object.attribute = injectedObject2.method();
// some other things
return retVal;
}
if (success)
{
object.otherAttribute = someValue;
}
return object;
}
My Przypadek jest, testuję MyMethod z Moq i chcę zweryfikować zachowanie Func zgodnie z oczekiwaniami. Mam kilka przedmiotów wstrzykniętych w jego ciało, które są drwinami i powinny być zweryfikowane; również zaczyna budować moją wartość zwracaną, więc nie mogę wykonać żadnego potwierdzenia, chyba że wywołam funkcję przekazaną jako parametr.
W Java i JUnit + EasyMock, chciałbym uchwycić parametr przekazany w następujący sposób:
public void testMyMethod() {
// ...
Capture < Function < void, Boolean > > functionCapture = Captures.last();
expect(notMineClassInstance.execute(EasyMock.capture(functionCapture)));
// Expectations for the body of the function
replay();
functionCapture.getValue().apply(null);
}
Jak mogę zrobić to samo przy użyciu C# + Min?
Wygląda świetnie, ale gdy to zrobię, pojawia się następujący błąd: * Test 'failed: System.NullReferenceException: Odwołanie do obiektu nie jest ustawione na instancję obiektu. w teście. b__0 (Uchwycony Funk'1) * –
@ LuísGuilherme zobacz pełną próbkę testową –
Działa od początku. Otrzymałem Null Reference w wywołaniu Func :) –