Windows Phone 7.1, проект Silverlight NUnit - шаблон и Moq: TypeLoadException - PullRequest
2 голосов
/ 06 сентября 2011

пришло время провести некоторое модульное тестирование с MVVM Light ViewModels.

Установка:

Шаги:

  1. Создание нового проекта MvvmLight (WP7)
  2. Конвертировать проект в WP7.1
  3. Создание нового проекта Silverlight NUnit
  4. Ссылка на WP7-проект для Silverlight NUnit -project
  5. Добавление фиктивного метода в MainViewModel (например, общедоступная строка DoSomething ())
  6. Добавить тест, который создает экземпляр MainViewModel, вызывает фиктивный метод и утверждает.
  7. Выполнить тесты -> все должно работать как положено
  8. Добавить ссылку на Moq
  9. Добавить второй метод испытаний с некоторым 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"));

  10. Выполнить тесты.

Это то, что я получаю через 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) , которая использовалась в этой статье. И что ты знаешь? Это работает.

Я не собираюсь выдвигать это как ответ, потому что я все еще не знаю, что здесь происходит. Я думаю, что оригинальный вопрос остается в силе.

...