Я только начинаю здесь с насмешки, и я пытаюсь сделать что-то, что, я думаю, должно быть довольно простым.Использование typemock для цепочки
У меня есть класс, который читает данные календаря Google. Во-первых, он создает объект CalendarService
, затем он вызывает Query
на этом объекте, принимает EventFeed
и выполняет итерации по коллекции предметов AtomEntryCollection
. Я хочу, чтобы все это насмехалось, так как я не хочу, чтобы мои тесты отправляли любые веб-запросы. Я попытался насмешливо все это с
var service = MockManager.Mock<CalendarService>();
var events = MockManager.MockAll<EventFeed>();
var entries = MockManager.MockAll<AtomEntryCollection>();
service.ExpectAndReturn("Query", events.MockedInstance);
events.ExpectGet("Entries", entries.MockedInstance);
entries.ExpectGetAlways("Count", 3);
но мой тест не пройден, как только объект, возвращаемый из метода service.Query()
используется. Я понимаю, что в 5-й строке entries.MockedInstance
все еще был нулевым, поэтому ExpectAndReturn
записал нуль как возвращаемое значение - так что я должен делать? Как я могу установить mocks для возвращения действительных макетных объектов вместо нулей?
Примечание. Я пишу проект .NET 2.0, поэтому я не могу использовать функции Isolator (я думаю). Это помогло бы мне? Или, может быть, переключение на Rhino или MOQ сделает все проще?
Спасибо, я проверю это, когда вернусь домой и отметю его как ответ. –
Весь интерфейс Isolate и AAA API работает только для .NET 3/3.5. Я работаю над VS2008, но .NET 2.0, поэтому я не могу его использовать. Когда я заменил Mock на MockObject, я получил соответствующие объекты внутри своего SUT, но я не смог заменить свойство Count, чтобы вернуть 3 вместо 0. Мне удалось подделать метод «Содержит», но не другие свойства. Что я делаю неправильно? Или есть какая-то ошибка с подделками? –
Noam, Неправильно. Вы можете использовать AAA для 2.0. Во-первых, вы можете захотеть, чтобы ваши тесты использовали 3.5, поскольку они представляют собой отдельные проекты, чем производственный код. Также посмотрите здесь: http://blog.typemock.com/2008/10/how-to-use-isolator-new-api-in-vs2005.html – user19930