Le code testé est le suivant. view.QueryResultsGrid est un objet System.Windows.Forms.DataGridView:Exception de lancement NUnit + Moq
public void SelectCheckedChanged(object sender, EventArgs e)
{
view.QueryResultsGrid.SelectionMode = DataGridViewSelectionMode.ColumnHeaderSelect;
}
test tentée:
private Mock<IQueryForm> mockWindow;
private QueryFormPresenter presenter;
/// <summary>
/// Runs ONCE prior to any tests running
/// </summary>
[TestFixtureSetUp]
public void TestFixtureSetUp()
{
//We're interested in testing the QueryFormPresenter class here, but we
//don't really care about the QueryForm window (view) since there is hardly any code in it.
//Therefore, we create a mock of the QueryForm view, and pass it to the QueryFormPresenter to use.
mockWindow = new Mock<IQueryForm>();
presenter = new QueryFormPresenter(mockWindow.Object);
}
[Test]
public void Moq_Is_Hard()
{
//Arrage
DataGridView d = new DataGridView();
mockWindow.SetupGet(x => x.QueryResultsGrid).Returns(d);
//Act
presenter.SelectCheckedChanged(null, null);
//Assert
//mockView.VerifyGet(x => x.QueryResultsGrid.SelectionMode, Times.AtMostOnce());
mockWindow.VerifySet(x => x.QueryResultsGrid.SelectionMode, Times.AtMostOnce());
}
Si je mets un point d'arrêt sur la ligne de code en cours de test, VS me dit: La La propriété ou l'indexeur 'Presenter.IQueryForm.QueryResults' ne peut pas être utilisé dans ce contexte car il manque l'accesseur get. Cependant, dans le test, j'ai pensé que je mettais en place l'accesseur Get sur le simulacre, donc je ne comprends pas ce message. Enfin, NUnit donne une exception: 'référence d'objet non définie sur une instance d'un objet'.
Toute aide est grandement appréciée!
Andy
Merci pour votre aide! – Andy