2016-05-25 2 views
0

я следующий код:Передача значения в тесте Mock Rhino

if (ActiveApplication.GetField("previous_date").Value != ActiveApplication.GetField("new_date").Value) 
{ 
     //do something.. 
} 

Я хочу модульного тестирования этого. Будучи новичком в тестах Rhino, я пытаюсь понять, как передать значение, чтобы я пошел в цикле. Вот что я пробовал:

var previous_date = MockRepository.GenerateMock<IField>(); 
stubApplication.Stub(x => x.GetField("previous_date")).Return(previous_date); 
previous_date.Stub(x => x.GetInternalValue()).Return("20160525"); 

var new_date = MockRepository.GenerateMock<IField>(); 
stubApplication.Stub(x => x.GetField("new_date")).Return(new_date); 
new_date.Stub(x => x.GetInternalValue()).Return("20160525"); 

Может кто-нибудь, пожалуйста, скажите мне, что я делаю неправильно?

ответ

1

Это возвращает previous_date, интерфейс типа IField:

stubApplication.Stub(x => x.GetField("previous_date")).Return(previous_date) 

Потому что это не реализация базового класса, ваш код использует Value свойство на интерфейсе, который должен быть установлен в макете, а, скорее чем с использованием GetInternalValue(). То же самое с new_stub.

EDIT: Вам нужно по существу сделать следующее (обратите внимание, я не уверен, если это правильный синтаксис, поскольку я не использовал эти рамки, но я пытаюсь ухватить суть):

previous_date.Stub(x => x.Value).Return("20160525"); 
+0

Это то, что я сделал выше справа? Но это не работает? – NoviceMe

+0

Не свойство Value. Вам нужно что-то вроде (я не знаю точного синтаксиса): 'previous_date.Stub (x => x.Value) .Return (" 20160525 ");'; это не в приведенном выше примере кода. –

Смежные вопросы