单元测试假存储库,如何在不先添加实体的情况下测试GetById方法?

时间:2008-11-24 12:26:45

标签: c# unit-testing

我的理解是你必须编写隔离功能的单元测试。所以给定一个具有此方法的存储库类:

Entity GetById(Guid id)

实现(使用字典进行存储),如果没有首先添加实体,您将如何编写测试?是否可以使用一组已知的guid进行测试?然后在假存储库构造函数中,我可以用一些guid遵循模式的实体填充字典,这样我就可以使用guid测试GetById()方法,我知道它会返回一个实体。

感谢阅读!

PS。这是我第一次编写单元测试。

2 个答案:

答案 0 :(得分:4)

是的,您可以在测试中使用已知的测试ID - 这就是我要做的。虽然我已经成为Rhino Mocks的粉丝,但是你可以让你更直接地测试你对模拟对象的期望。

例如,在您调用存储库之前,您将执行此操作:

Expect.Call(repository.GetById("someObject")).Return(new RepositoryThing());

无论如何它对我很有吸引力:))

答案 1 :(得分:2)

是的,使用伪造的对象/接口实现以及可以从伪实例查询的固定项目列表是一种有效的做法。

显然,如果不首先添加条目,则只能测试在存储库中找不到Guid时返回的内容。

在C#中允许它,一个也可以拥有存储库的虚假实现有一个方法来向存储库添加项目。