Проверьте, был ли выполнен ICommand - PullRequest
1 голос
/ 20 июля 2010

У меня следующие вопросы: как я могу проверить, был ли вызван метод Execute ICommand для фиктивного объекта?

Я использую следующий код:

var mockOperandVM = new Mock<UCOperandViewModel> ();  
mockOperandVM.Setup (x => x.EditCommand).Returns (new RelayCommand<String> (x => { }));  

var toolbarTrayVM = new UCToolbarTrayViewModel (mockComponentsLocator.Object);
toolbarTrayVM.EditCommand.Execute ("Edit");
mockOperandVM.Verify (x => x.EditCommand.Execute ("Edit"), "EditCommand with 'Edit' parameter was not executed on the mock object.");

Здесь я должен указать, что у меня есть UCperandViewModel для команды EditCommand, и я хочу проверить, выполняется ли эта ICommand при вызове EditCommand.Execute на панели инструментовTrayVM.

Я получаю ArgumentException при вызове Verify. В нем говорится, что «Соответствующий конструктор для заданных аргументов не был найден в фиктивном типе».

Заранее спасибо.

1 Ответ

1 голос
/ 20 июля 2010

Внедрить сервис в SUT - предпочтительно с помощью Конструктор Инъекций . Это позволит вам написать код модульного теста, например:

var mock = new Mock<IService>();

var sut = new MyViewModel(mock.Object);
sut.SomeCommand.Execute(null);

mock.Verify(s => s.Foo());

В этом примере используется Moq .

...