Rhino Mocks, проверьте, что тестируемый метод не вызывает данный метод - PullRequest
0 голосов
/ 09 декабря 2010

У меня есть класс, который я тестирую, скажем:

class Service{
 public virtual DALClass DALAccess{get;set;}
 public virtual void Save(TEntity t){}
 public virtual bool Validate(TEntity t)
}

Я хочу протестировать метод Save, и в качестве части моего теста я хочу, чтобы на основе свойства в TEntity утверждалось, чтометод Validate не вызывается и метод в DALClass делает.

Вот что у меня есть:

[TestMethod]
void TestSave(){
 //arrange
 TEntity entity = new TEntity();
 Service service = new Service();
 DALClass dal = MockRepository.GenerateMock<DALClass >();
 dal.Expect(t => t.MustSaveInstance(Arg.Is(entity))).Return(false);
 service.DALAccess = dal;
 //act
 service.Save(entity);
dal.VerifyAllExpectations();

//Question, how can I verify that service.Validate is not called

Спасибо, Игнасио

Ответы [ 2 ]

1 голос
/ 12 декабря 2010

Создать PartialMock of Service.Затем отключите вызов Validate и сделайте так, чтобы он вызывал Assert.Fail при вызове.Как то так:

service.Stub(s => s.Validate(entity)).WhenCalled(i => Assert.Fail("Validate called"));
0 голосов
/ 09 декабря 2010

Создайте новый класс TEST_Service, который наследуется от Service, переопределяет .Validate и регистрирует, вызывается он или нет:

class TEST_Service : Service
{
    public override bool Validate(...)
    {
        // Remember that I was called
        ValidateCalled = true;
        base.Validate(...);
    }
    public bool ValidateCalled { get; set; }
}

Тогда проверьте сервис. ValidateCalled

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...