носорог дразнит насмешливый звонок - PullRequest
0 голосов
/ 25 января 2010

У меня есть метод, который я хочу проверить, который попадает в базу данных. Из того, что я прочитал, это идеальная возможность использовать насмешку. Однако проблема, с которой я сталкиваюсь, заключается в том, что я передаю объекту строку, а затем он создает объект и ударяет БД этим объектом, т.е.

public void test(string t)
{
   Test t1 = new Test(t);
   db.Save(t1);
}

Тогда в тесте у меня есть:

using(mockery.Record)
{
   Expect.Call(db.Save( ??? ))
}

Проблема в том, чего мне здесь ожидать? Звонок на:

Expect.call(db.Save(new Test(t))

не работает.

Поскольку я новичок в издевательстве, это может быть простой вопрос, но любая помощь будет высоко ценится.

спасибо

1 Ответ

0 голосов
/ 26 января 2010

Ну, часто вы передаете фактический экземпляр, который вы ожидаете позже. Например:

public void test(string t)
{
    Test t1 = new Test(t);
    using(mockery.Record)
    {
       Expect.Call(db.Save(t1));
    }
    using(mockery.Playback()
    {       
        db.Save(t1);
    }
    mockery.VerifyAll();
}

Но это может быть ограничением. Затем вы можете определить критерии, которые аргумент должен заполнять. Например:

using(mockery.Record)
{
   Test instanceToCompare = new Test(t);    
   Expect.Call(db.Save(Arg<Test>.Is.Equal(instanceToCompare)));
}

Или другой пример:

using(mockery.Record)
{
   Expect.Call(db.Save(Arg<Test>.Matches(t=>t.Name.Length.Equals("Test"))));        
}
...