Перевести 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 метод.

Другие вопросы по тегам