您好我正在使用测试驱动开发,似乎是在一个我不熟悉的领域。你可以检查一下,让我知道我应该在我的代码中做出哪些改变来使它成为可测试的单元#34; ?
要测试的代码:
public void PurchaseItemList()
{
//call methods to checkavailablility
If(!productAvailable)
{
purchaseItemEventArgs.IsSuccessfull = false;
}
else
{
purchaseItemEventArgs.IsSuccessfull = true;
// code to update model.
purchaseItemEventArgs.ItemsPurchased = GetItemsPurchased()
}
}
现在我遇到的问题是我无法模拟purchaseItemEventArgs类,因为它没有实现任何接口。我正在使用moq进行测试。关于代码更改的任何建议,使其单元可测试将非常有用。
由于
答案 0 :(得分:1)
由于GetItemsPurchased()
是您班级的一种方法,因此您可以将其设为protected virtual
。所以你可以定义一个这样的测试类:
class TestableMyClass : MyClass{
private Items _items;
public TestableMyClass(Items items) : base() {
_items = items;
}
protected Items GetItemsPurchased(){
return _items;
}
}
然后,在测试中,将new MyClass
替换为new TestableMyClass(myItems)
。
这样,您的实际GetItemsPurchased()
将不会在您的测试中被调用,您可以注入所需的项目。