Re[6]: Mock
От: Flea  
Дата: 23.09.08 13:42
Оценка:
Здравствуйте, 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
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.