Насмешка использования 'традиционной' Записи/Воспроизведения по сравнению с моделью Moq

Если у вас в фокусе вид EditText, программная клавиатура отобразится автоматически. Если вы хотите использовать программную клавиатуру для чего-то другого, вам, вероятно, нужно создать ее в виде набора кнопок и обрабатывать каждый щелчок. Это трудоемко, но довольно прямо. В целом это работает так же, как в Android

9
задан Fung 16 March 2009 в 13:50
поделиться

2 ответа

Подход Записи/Воспроизведения поддерживается RhinoMocks. Основная идея состоит в том, что Ваше выполнение теста разделено на две фазы, рекордную фазу и фазу воспроизведения. Быть конкретным

var repo = new MockRepository();
var dependency = repo.DynamicMock<IDependency>();
With.Mocks(repo).Expecting(delegate {
         Expect.Call(dependency.AMethod(1)).Return(result);                    
      }).Verify(delegate {
         var sut = new Sut(wrappee);
         sut.DoStuffThatCallsAMethod();
         Assert.IsTrue(sut.ResultState);
      });

Таким образом, Ожидание блока является Рекордной фазой, и Проверить блок является фазой Воспроизведения.

Вариант Moq этого кода был бы

var dependency = new Mock<IDependency>();
dependency.Expect(dep => dep.AMethod(1)).Returns(result);          
var sut = new Sut(wrappee.Object);
sut.DoStuffThatCallsAMethod();
Assert.IsTrue(sut.ResultState);

Который, как Вы видите, намного более хорош читать. Я раньше использовал RhinoMocks, но так как я обнаружил Moq, я только использую Moq. Я нахожу, что это, чтобы быть производит намного больше читаемого кода. Таким образом, мой совет состоял бы в том, чтобы пойти для Moq.

7
ответ дан 4 December 2019 в 22:30
поделиться

Я сразу перешел на Запись / Воспроизведение, потому что в настройках трудно увидеть, что было заглушено / имитировано или просто запущен код. Я считаю, что у Rhino есть несколько способов работы. В частности, вы можете использовать блок using () , чтобы изолировать установку от других вызовов.

0
ответ дан 4 December 2019 в 22:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: