2010-06-03 4 views
3

Я пишу некоторые модульные тесты в своем проекте, и у меня есть зависимость datacontext от контроллера, содержащего методы, которые я хотел бы протестировать.Стыковка datacontext для объекта, который имеет зависимость

Я использую Ninject для инъекции зависимости и Moq для создания моего макета datacontext. Мой DI использует интерфейс IDataContext, который вносит изменения в dbml и используется в процессе инъекции.

В моем модульном тестировании Я создаю мой макет DataContext следующим образом:

var mock = new Mock<IDataContext>(); 
var myController = new MyController(mock.Object); 

Это бросает Object reference not set to an instance of an object. исключения на вторую строке во время выполнения конструктора DataContexts.

У меня явно отсутствует фундаментальная деталь в настройке этого, однако большинство примеров Moq, которые я видел, включают какой-то тест против издевающегося объекта с использованием Setup().

Я собираюсь сделать это правильно? Должен ли я создавать макет моего интерфейса IDataContext или что-то еще?

+0

Можете ли вы показать стек вызовов для исключения? –

+0

Также, что происходит в конструкторе MyController? Если мне пришлось опасаться догадки в этот момент, вам не хватает установки на объект-макет, который должен вернуть что-то, что используется в конструкторе. – cloggins

+0

Спасибо за комментарии ребята. Я как раз собирался ответить, прежде чем melaos отправил ответ, который я искал. Еще раз спасибо за то, что нашли время для комментариев. –

ответ

2

ха-ха, ответ пришел в то время как я читал через emad's blog on unit testing in ASP.Net MVC.

Я предполагаю, что вы не добавить строку подключения к app.config вашего тестового права проекта? :)

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

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

link

+0

Спасибо, Мелаос! Добавление app.config в проект моих тестов и размещение кода строки подключения там работает. Отлично! –

+0

рад, что это поможет :) – melaos