Перевести UT в NMock2 в Moq. Кроме того, что означает.Will() в NMock2?
Я новичок в платформах NMock2 и Moq. Мне нужна помощь в преобразовании кода NMock2 в моем текущем проекте в код Moq:
var myMock= myMockery.NewMock<IMyInterface>();
var myRoleMock = myMockery.NewMock<IRoleInterface>();
var acceptAction = new MyAcceptAction(myRoleMock);
Stub.On(myMock).Method("Accept").Will(acceptAction);
Мне тоже не понятно что Will()
в приведенном выше коде означает. У меня есть идея, что Will(Return.Value(something))
в NMock2 эквивалентно Returns(something)
в Мок.
Так и есть Will(something)
а также Will(Return.Value(something))
тот же самый?
1 ответ
Чтобы узнать разницу, нам нужно немного разобраться. Давайте посмотрим под капот, Will
подпись метода выглядит так:
public void Will(params IAction[] actions)
Теперь IAction
Интерфейс происходит от одного особенно важного интерфейса, который IInvokable
, Как следует из названия, это позволяет вызывать разработчиков (через Invoke
метод). Как это связано с Return.Value
?
public class Return
{
public static IAction Value(object result)
{
return new ReturnAction(result);
}
}
Копая немного глубже, мы можем найти, что ReturnAction
в его Invoke
Метод просто устанавливает возвращаемое значение, которое будет использоваться / ожидаемое макетом. Однако это не главное. Return.Value
это простое создание оболочки IAction
требуется Will
,
Ваш MyAcceptAction
также должен реализовать этот интерфейс; чтобы знать, что именно происходит в
Stub.On(myMock).Method("Accept").Will(acceptAction);
линия, вам придется проверить, как MyAcceptAction
реализовано. В частности, Invoke
метод.