Во-первых, какую библиотеку-макет вы используете (в зависимости от этого ответ может измениться)?
Я знаю, что если вы использовали Rhino Mocks, проблема была бы в том, что ваше ожидание настроено на возвращение true, когда он получит тот конкретный экземпляр foo
, который вы создадите наверху. Это отличается от того, что передается, когда выполняется в вашем контроллере, поэтому он возвращает false (поскольку ожидание не было установлено для этой версии foo
объекта). Чтобы было понятнее, если бы у вас был этот код:
Foo f1 = new Foo();
Foo f2 = new Foo();
repository.Expect(s => s.IsExist(f1)).Returns(true);
bool b1 = repository.Object.IsExist(f1);
bool b2 = repository.Object.IsExist(f2);
Я бы ожидал, что b1
будет истинным (так как это конкретное ожидание, которое вы установили, т.е. учитывая f1
return true
) и b2
будет ложным (так как вы не указали хранилищу сделайте что-нибудь конкретное, если он получил f2
, поэтому он вернется к своему поведению по умолчанию, возвращая false).
В Rhino Mocks вам нужно настроить ожидание так:
repository.Expect(s => s.IsExist(Arg<Foo>.Is.TypeOf)).Returns(true);
, который вернул бы true, если IsExist был вызван с любым экземпляром объекта Foo. Если вам нужно быть более конкретным, вы можете получить что-то вроде этого:
repository.Expect(s => s.IsExist(f => f.SomeProperty == "blah" && f.OtherProperty.StartsWith("baz")))).Returns(true);
, который вернул бы true, если foo.SomeProperty
равняется "blah"
и foo.OtherProperty
начинается с "baz"
.
Не похоже, что вы используете Rhino Mocks, поскольку ваш синтаксис немного отличается, но, надеюсь, это укажет вам правильное направление ...