Rhino Mocks использует DynamicProxy2, чтобы творить чудеса, поэтому вы не сможете настроить ожидания / результаты для не виртуальных методов.
Что касается разницы между SetupResult.For
и Expect.Call
, если вы хотите, чтобы ваш тест не прошел проверку, если метод не вызывается, используйте Expect.Call
. Если вы просто хотите предоставить результат из своего фиктивного объекта и не хотите проваливать проверку, если он не вызывается, используйте SetupResult.For
Так что следующее не получится:
using(mock.Record()){
Expect.Call(service.SomeMethod()).Return("you have to run me");
}
using(mock.Replay()){
// Some code that never calls service.SomeMethod()
}
И этот тест не будет:
using(mock.Record()){
SetupResult.For(service.SomeMethod()).Return("you don't have to run me");
}
using(mock.Replay()) {
// Some code that never calls service.SomeMethod()
}
Имеет ли это смысл?