Здравствуйте, Time, Вы писали:
Я тогда лучше свой пример приведу.
Есть такие классы:
public class Controller
{
...
public bool IsTrue()
{
bool istrue = true;
...
if (Condition)
{
using (TheForm form = new TheForm())
{
form.ShowDialog(null, arg);
}
}
return istrue;
}
}
public class TheForm : Form
{
public DialogResult ShowDialog(IWin32Window owner, MyType arg)
{
...
return this.ShowDialog(owner);
}
}
Для этой функции надо написать тест так, чтоб вместо того, чтоб вызывать ShowDialog, просто возвращался DialogResult.
Пробую такой код:
[Test]
public void Controller_IsTrue()
{
Controller cont = new Controller();
...
TheForm form = mocker.DynamicMock<TheForm>();
Expect.Call(form.ShowDialog(null, null)).Return(DialogResult.OK);
LastCall.IgnoreArguments();
mocker.ReplayAll();
bool res = cont.IsTrue();
Assert.IsFalse(res);
}
При этом ShowDialog вызывается и форма появляется. Если ее закрыть, тест проходит

Вроде бы по смыслу все, как в первом примере...
PS: используется Rhino mock