Nothing much to, just that it took me some time to figure it out today. The code below tests whether DivisionID is actually set in the presenter.
public class Presenter
{
readonly IRepository repository;
public Presenter(IRepository repository)
{
this.repository = repository;
}
public IView View { get; set; }
public void GetDivision()
{
View.DivisionID = repository.GetDivisionID();
}
}
public interface IView
{
int DivisionID { get; set; }
}
[TestFixture]
public class PresenterTests
{
Presenter sut;
IView view;
IRepository repository;
[SetUp]
public void SetUp()
{
view = MockRepository.GenerateMock<IView>();
repository = MockRepository.GenerateMock<IRepository>();
sut = new Presenter(repository){View = view};
}
[Test]
public void when_on_the_sut_GetDivisionID_is_called_it_should_set_the_divisionID_on_the_view()
{
//AAA mocking style
//Arrange
const int divisionID = 1;
repository.Stub(s => s.GetDivisionID()).Return(divisionID);
//note: the expectation is set when DivisionID is set to divisionID
view.Expect(s => s.DivisionID = divisionID);
//Act
sut.GetDivision();
//Assert
view.VerifyAllExpectations();
}
}