Próbuję użyć Moq 3.x, działa znakomicie. Mam jednak problem, którego nie potrafię rozwiązać. BiorącArgument Moq z Action
public interface ITestSpec
{
bool Run(Action<string, string> onIncorrectResponse);
}
Staram następujące:
var passingTestSpec = new Mock<ITestSpec>();
passingTestSpec
.Setup(m => m.Run(null))
.Returns(true);
Action<string, string> fakeAction =
(expected, actual) => { throw new Exception("Should not run"); };
Assert.IsTrue(passingTestSpec.Object.Run(fakeAction));
Moim problemem jest to, że każda rozmowa na passingTestSpec.Object.Run (... pewne działania ...) zwraca false. Wygląda na to, że biblioteka Moq próbuje dopasować akcję do argumentu przekazanego do Run() w wywołaniu Setup() i nie powiedzie się. W rzeczywistości nie ma znaczenia, jaką akcję wywołaję w wywołaniu Run() ... nadal zwraca false.
Wszelkie pomysły?
[Edytuj] Właśnie coś odkryłem; jeśli zamieniłem linię instalacyjną na
.Setup(m => m.Run(fakeAction))
test przechodzi. Jednak nie wiem, z jaką operacją zostanie wywołana metoda .Run(), więc nie jest to rozwiązanie. Ktoś wie o odpowiedniku It.IsAny dla działań?
LOL Powinienem wiedzieć ktoś ma zamiar znaleźć rozwiązanie ... myśleć zmarnowałem kilka godzin na tym :(dzięki, pójdę z tym, że lepiej niż moje. –