我正在使用 NUnit,我有以下代码将被测试。
public class StudentPresenter
{
IView myview;
Repository myrepo;
public StudentPresenter(IView vw, Data.Repository rep)
{
this.myview = vw;
this.myrepo = rep;
this.myview.ButtonClick += myview_ButtonClick;
}
public void myview_ButtonClick()
{
try
{
var d = this.myrepo.GetById(int.Parse(myview.GivenId));
this.myview.GetStudent(d);
}
catch(Exception e)
{
}
}
}
我需要测试 myview_ButonClick()
假设我将测试此方法,如果myview.GivenId
为 null,它将引发异常?
所以我编写单元测试如下:
[Test]
public void Button1Click_NullText_ThrowException()
{
var mock = Substitute.For<IView>();
StudentPresenter sp = new StudentPresenter(mock, repo);
mock.GivenId = string.Empty;
Assert.Throws<Exception>(()=>sp.myview_ButtonClick());
}
但测试失败..为什么?(因为我的 catch 块中没有投掷)。但我不想扔任何东西,我只想让它有能力接住。那么可以测试吗?