Tijmen 11:00, 16 September 2009

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();    
    }
}
Comments are closed.