У меня есть класс 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
}
}
}
Теперь я должен написать 2 тестовых примера для этого метода 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 и передать нулевой объект в конструктор. Но это приводит к некоторой ошибке "Неопределенное совпадение найдено". Очевидно, что передача нулевого значения здесь не работает. Так может кто-нибудь сказать мне любую другую работу вокруг, чтобы проверить блок else.
PS: мне нужно проверить блок if и else, чтобы он был включен в покрытие кода.