我有一个名为Class1
的类,它有一个构造函数和几个方法。为这些方法编写单元测试用例时,我使用了MSTest。这个类看起来像这样。
class Class1
{
Order order = new Order(); // there is an class Order
public Class1(Order _order)
{
order = _order;
}
public virtual async Task<bool> GetData()
{
if(order != null)
{
//do something
}
else
{
// do something else
}
}
}
现在,我必须为这个GetData()方法编写两个测试用例,其中一个测试if块,另一个测试else块。我已经成功地测试了if块,但是无法测试else块。我尝试编写的测试方法如下。
[TestMethod()]
public void GetDataTest()
{
Order order = new Order();
order = null;
var mockService = new Mock<Class1>(order)
{
CallBase = true
};
var result = await mockService.Object.GetData(); // error thrown from here
Assert.IsFalse(result);
}
我想要做的是将订单对象设置为null并将null对象传递给构造函数。但是这会抛出一些错误 "找到多个匹配项"。显然,在这里传递null值不起作用。那么有谁能告诉我其他的解决方法来测试else块呢?
PS:我需要测试if和else块,以便包含在代码覆盖范围内。