Почему мой контекст RIA WCF вызывает исключения FileNotFound во время модульных тестов? - PullRequest
1 голос
/ 24 февраля 2011

Я пытаюсь написать модульные тесты с участием моих прокси-объектов сущности RIA WCF, и когда я пытаюсь получить доступ к родительским или дочерним свойствам сущности через ассоциацию, я получаю FileNotFoundException, когда класс WebContext не может загрузить System.Xml.

Например, у меня есть две сущности, определенные в моем веб-проекте в Entity Framework - Course и CourseUnit. У Course много CourseUnit детей. Я не подвергаю контексты RIA или что-либо еще моим ViewModels, все они скрыты за интерфейсами. Я использую Moq для макетирования этих интерфейсов и возврата стандартных прокси-объектов сущностей RIA в мои модульные тесты.

Это прекрасно работает, когда я тестирую такие вещи, как

Assert.AreEqual("title", course.Title)

, где course - это экземпляр прокси-сервера RIA. Однако, если я сделаю что-то вроде

Assert.AreEqual(0, course.CourseUnits.Count)

я получаю следующее исключение

FileNotFoundException не был обработан код пользователя Не удалось загрузить файл или сборка 'System.Xml, версия = 2.0.5.0, Culture = нейтрально, PublicKeyToken = 7cec85d7bea7798e 'или одна из его зависимостей. Система не могу найти указанный файл.

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

Исключение фактически возникает в сгенерированном коде. Его можно найти в файле [webProjectName].g.cs в частичном классе Course : Entity и происходит в получателе CourseUnits.

Есть идеи?

Редактировать - я добавил ссылку на сборку EntityFramework, и исключение изменилось на то же самое, но System.ComponentModel.DataAnnotations вместо System.Xml. Излишне говорить, что я пытался ссылаться на обе сборки в проекте модульного тестирования, и это не сработало.

...