Подтвердить что ты не робот

В чем разница между носорогами и ожиданием

В чем разница между ногами-нокаутами и ожиданием здесь: Похоже, что они ведут себя точно так же?

mockContext.Stub(x => x.Find<Blog>())
    .Return(new List<Blog>() 
    { 
        new Blog() { Id = 1, Title = "Test" } 
    }.AsQueryable());

mockContext.Expect(x => x.Find<Blog>())
    .Return(new List<Blog>()
    {
        new Blog(){Id = 1,Title = "Title"},
        new Blog(){Id=2,Title = "no"}
    }.AsQueryable());
4b9b3361

Ответ 1

Stub() определяет поведение для заштрихованного объекта.
Expect() определяет поведение и ожидаемое для издевающегося объекта.

Итак, если вам нужно проверить, что вызван метод издевательства, вы должны использовать Expect:

var mockContext = MockRepository.GenerateMock<IContext>();
mockContext.Expect(x => x.Find<Blog>()).Return(new List<Blog>());

Теперь, после завершения тестового действия, вы сможете проверить, выполняются ли ожидания:

mockContext.VerifyAllExpectations();

Если вам нужно поработать с методом, вы можете использовать Stub():

var mockContext = MockRepository.GenerateStub<IContext>();
mockContext.Stub(x => x.Find<Blog>()).Return(new List<Blog>());

Ответ 2

Когда вы используете Expect для метода в этом случае x.Find(), если ваш метод не вызывается во время теста mockContext.VerifyAllExpectations(); не удастся.