Ну, основная идея в том, что Action<T>
где-то производит какое-то изменение состояния (если нет, какой смысл?).Итак, модульная проверка, что ожидаемое изменение состояния происходит, когда условия выполняются, и что ожидаемое изменение состояния не происходит, когда условия не выполняются.
Конечно, в идеале, вы высмеиваете Action<T>
что государственное тестирование супер просто.Для этого вам не нужен Moq или какой-либо другой фальшивый фреймворк:
bool actionWasInvoked = false;
Action<Foo> action = foo => actionWasInvoked = true;
Bar<Foo> bar = new Bar<Foo>();
// set up conditions that should guarantee action is invoked
bar.M(action);
Assert.IsTrue(actionWasInvoked);
и
bool actionWasInvoked = false;
Action<Foo> action = foo => actionWasInvoked = true;
Bar<Foo> bar = new Bar<Foo>();
// set up conditions that should guarantee action is NOT invoked
bar.M(action);
Assert.IsFalse(actionWasInvoked);
Конечно, я не знаю ваших точных настроек.Может быть, вы передаете action
для построения Bar
, или, возможно, у вас есть какой-то другой способ задания действия.Но идея должна быть ясной.