【发布时间】:2014-11-10 23:27:13
【问题描述】:
这是我的第一篇文章!
我正在尝试使用 nsubstitute 编写单元测试,但我发现最后一点很困难。
我在下面包含了一段 sn-p 代码,在模型上调用该方法时测试失败。是否可以将这种方法存根?类似于如果它是一个接口
干杯,伙计们!期待您的回复
詹姆斯
我的单元测试尝试
public class MyTests
{
private IModelMapper _modelMapper;
[SetUp]
public void Setup()
{
_modelMapper = Substitute.For<IModelMapper>();
}
[Test]
public void GetModel_Returns_A_Model()
{
var result = theClass.GetModel(new Booking {CurrencyCode = ""}, null);
**UPDATE to include assert**
// Assert
Assert.IsInstance<BasketModel>(result);
}
}
功能代码
public Model GetModel(Booking booking)
{
var model = _modelMapper.Map(booking);
// Is it possible to stub this out? Similar to if it was an interface
model.FormatPricing(somethingHere);
return model;
}
更新 - 说明返回类型
BasketModel model = _modelMapper.Map(booking);
更新 #2 - 包括返回
var basketModel = new BasketModel();
BasketModel model = _modelMapper.Map(booking).Returns(basketModel);
【问题讨论】:
-
_modelMapper.Map(booking)的返回类型是什么?如果它是一个接口,那么你可以存根它。 -
它不是一个接口,它是一个类。
-
好的,最简单的方法是实现一个假模型并让你的存根 IModelMapper 返回它。我会发布一个答案,但我个人对 nSubstitute 并不熟悉。此外,了解您要测试的内容会很有帮助。您的测试方法不包含断言。
-
我添加了断言,只是为了检查方法的返回类型
-
能否提供一个示例链接?
标签: c# unit-testing nsubstitute