테스트중인 코드는 다음과 같습니다.NUnit + Moq Throwing 예외
public void SelectCheckedChanged(object sender, EventArgs e)
{
view.QueryResultsGrid.SelectionMode = DataGridViewSelectionMode.ColumnHeaderSelect;
}
시험이 시도되고 : 내가 시험 코드 줄에 중단 점을 넣으면
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());
}
은, VS는 저에게 말한다 : view.QueryResultsGrid는 System.Windows.Forms.DataGridView 객체입니다 속성 또는 인덱서 'Presenter.IQueryForm.QueryResults'는 get 접근자가 없기 때문에이 컨텍스트에서 사용할 수 없습니다. 그러나 테스트에서 나는 모의에 Get 접근자를 설정하고 있다고 생각했기 때문에 그 메시지를 이해하지 못합니다. 마지막으로 NUnit은 '객체 참조가 객체의 인스턴스로 설정되지 않음'을 제공합니다.
도움을 주시면 대단히 감사하겠습니다.
앤디
감사합니다! – Andy