пришло время провести некоторое модульное тестирование с MVVM Light ViewModels.
Установка:
Шаги:
- Создание нового проекта MvvmLight (WP7)
- Конвертировать проект в WP7.1
- Создание нового проекта Silverlight NUnit
- Ссылка на WP7-проект для Silverlight NUnit -project
- Добавление фиктивного метода в MainViewModel (например, общедоступная строка DoSomething ())
- Добавить тест, который создает экземпляр MainViewModel, вызывает фиктивный метод и утверждает.
- Выполнить тесты -> все должно работать как положено
- Добавить ссылку на Moq
Добавить второй метод испытаний с некоторым Moq. Я просто скопировал этот демо-код с сайта Moq:
var mock = new Mock ();
// ВАУ! Нет записи / воспроизведения странностей ?! :)
mock.Setup (framework => framework.DownloadExists ("2.0.0.0"))
.Returns (правда)
.AtMostOnce ();
// Ручной макет. Обьект в качестве соавтора и упражнение,
// как вызов методов на нем ...
ILoveThisFramework lovable = mock.Object;
bool download = lovable.DownloadExists ("2.0.0.0");
// Убедитесь, что данный метод действительно был вызван с ожидаемым значением
mock.Verify (framework => framework.DownloadExists ("2.0.0.0"));
- Выполнить тесты.
Это то, что я получаю через NUnit Runner на шаге 9:
SilverlightNUnitProject2.SilverlightTests.TestSomething:
System.TypeLoadException : Could not load type 'System.Action' from assembly 'mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
Вопрос:
Что здесь происходит? Какая часть моей установки не работает и почему?
Обновление!
Я нашел сообщение в блоге, связанное с этой проблемой здесь . Это вдохновило меня загрузить и попробовать точно такую же версию Moq (3.1.416.3) , которая использовалась в этой статье. И что ты знаешь? Это работает.
Я не собираюсь выдвигать это как ответ, потому что я все еще не знаю, что здесь происходит. Я думаю, что оригинальный вопрос остается в силе.