我試圖斷言一個屬性是否等於一個數字,當屬性只有一個setter時有問題。Assert.AreEqual在一個屬性只有一個Setter,在MVP單元測試
這是我的看法接口:
public interface ICalculatorView
{
int Number1 { get; }
int Number2 { get; }
string MathmaticalCalculation { get; set; }
int Answer { set; }
}
我只在屏幕上顯示Answer
和不使用get訪問,這就是爲什麼它只是對財產set訪問。
這是我的觀點,即實現該接口:
CustomerDetailsPresenter _presenter;
protected void Page_Load(object sender, EventArgs e)
{
_presenter = new CustomerDetailsPresenter(this, this,
new GetCustomerDetailsModel());
if (!Page.IsPostBack)
{
_presenter.Initialize();
customerIdDDL.DataSource = ListOfCustomerIds;
customerIdDDL.DataBind();
}
}
protected void performCalcButton_Click(object sender, EventArgs e)
{
MathmaticalCalculation = ((Button)sender).Text;
_presenter.PerformCalculation();
}
public int Number1
{
get { return int.Parse(number1TextBox.Text); }
}
public int Number2
{
get { return int.Parse(number2TextBox.Text);}
}
public string MathmaticalCalculation { get; set; }
public int Answer
{
set { answerLabel.Text = value.ToString(); }
}
}
我希望能夠單元測試在單元測試中執行的計算方法。下面是測試方法:
[TestMethod]
public void TestCalcWorks_AddingTwoNumbers()
{
// Arrange
var mockIDetailsView = new Mock<ICustomerDetailsView>();
var mockICalculatorView = new Mock<ICalculatorView>();
var mockIGetCustomerDetailsModel = new Mock<IGetCustomerDetailsModel>();
var mockTestPresenter = new Mock<CustomerDetailsPresenter>();
var testPresenter = new CustomerDetailsPresenter(mockIDetailsView.Object,
mockICalculatorView.Object, mockIGetCustomerDetailsModel.Object);
mockICalculatorView.Setup(x => x.Number1).Returns(2);
mockICalculatorView.Setup(x => x.Number2).Returns(2);
mockICalculatorView.Setup(x => x.MathmaticalCalculation).Returns("+");
// Act
testPresenter.PerformCalculation();
// Assert
Assert.AreEqual(mockICalculatorView.Object.Answer, 4);
}
這不會編譯爲mockICalculatorView.Object.Answer
沒有get訪問。我知道我可以將其添加到Answer
屬性,一切都會正常工作。但是,當然,我不需要修改我編寫的任何代碼,以便我可以運行測試方法,或者我可以嗎?
正是我之後的工作,因爲我想,謝謝你的幫助! – Win