我正在为通过FakeItEasy和NHibernate与数据库对话的小任务编写单元测试。我的测试用例还包括在数据库中找不到给定对象的场景,因此我希望模拟查询返回null
。
现在,我通过使用以下调用成功地实现了这一点:
var _session = _fixture.Freeze<ISession>();
A.CallTo(_session).WithReturnType<Foo>().Returns(null);
A.CallTo(_session).WithReturnType<Bar>().Returns(null);
// ~10 more of these with just different types defined
但我想知道是否有一种方法将其设置为默认行为--这样所有对带有泛型参数的_session
的调用都会默认返回null
?
发布于 2016-04-11 13:11:06
发布于 2016-04-11 13:17:16
这是AutoFixture和FakeItEasy在功能上重叠的一个领域。FakeItEasy内置了对创建要在测试中使用的虚拟对象的支持,AutoFixture也一样。两者的主要区别在于,FakeItEasy没有给这些对象指定测试值,而AutoFixture只提供对大多数用例足够好的合理缺省值。
当AutoFixture必须为接口或抽象类提供实例时,它只是将创建委托给配置好的模拟库,在本例中是FakeItEasy。这意味着,如果您想改变创建假对象的方式,您需要配置FakeItEasy,而不是AutoFixture。
不幸的是,作为@BlairConrad 指出,FakeItEasy目前没有为特定的假对象提供禁用虚拟创建的方法。
https://stackoverflow.com/questions/36547346
复制相似问题