【发布时间】:2015-09-02 16:54:36
【问题描述】:
假设我有如下定义的名为SomeClass 的类:
public SomeClass
{
private IThingFactory _thingFactory;
public SomeClass(IThingFactory thingFactory)
{
_thingFactory = thingFactory;
}
public IThing CreateThing(int a, int b, string c)
{
IThing thing = _thingFactory.MakeEmptyThing();
thing.MakeFromFields(a, b, c);
return thing;
}
}
CreateThing(int a, int b, string c) 方法的规范是它接受一个 int a, int b, string c 并返回一个带有相应属性的 IThing。 (所以内部可能是new Thing(a, b, c))
但是,工作委托给 IThingFactory 和 Thing 的实现会自行填充。
所以现在我正在尝试对方法 CreateThing() 进行单元测试,但我不确定它应该如何工作。
这是我尝试过的:
基于mock依赖的原则,我创建了一个Mock<IThingFactory>,并把它交给了SomeClass的构造函数
_mockThingFactory = new Mock<IThingFactory>();
someClass = new SomeClass(_mockThingFactory.Object);
之后,我调用了被测方法
IThing thing = _someClass.CreateThing(It.IsAny<int>(),
It.IsAny<int>(),
It.IsAny<string>>());
要断言,我不确定。我应该验证MakeEmptyThing() 是否被调用?我该怎么处理thing.MakeFromFields(a, b, c);?
【问题讨论】:
标签: c# unit-testing moq