【发布时间】:2015-02-11 03:12:00
【问题描述】:
我创建了一个存储库类来访问我的数据库,然后我使用 FakeItEasy 库进行了单元测试。使用真实存储库我得到了预期的结果,而使用假存储库返回 null。
[TestClass]
public class clientRepositoryTest
{
[TestMethod]
public void GetclientById()
{
var fakeRepository = A.Fake<IclientRepository>();
const int expectedclient = 1;
IclientRepository realRepository = new clientRepository();
var realResult = realRepository.GetclientById(expectedclient); // returns expected object
try
{
A.CallTo(() => fakeRepository.GetclientById(expectedclient)).MustHaveHappened();
var fakeResult = fakeRepository.GetSupplierById(expectedSupplier); // returns null
A.CallTo(() => fakeRepository.GetSupplierById(expectedSupplier).IdSupplier).Equals(expectedSupplier);
}
catch (Exception ex)
{
//The current proxy generator can not intercept the specified method for the following reason:
// - Non virtual methods can not be intercepted.
}
}
【问题讨论】:
-
除非该测试缺少一些代码,否则我认为您错过了重点。您并不是要在测试中直接调用假的方法,而是要将假作为依赖项传递给您正在测试的类,以便可以使用它来代替真正的依赖项。如果您将其用作依赖项,则必须指定结果。看看fakeiteasy.github.io,主页上的简单示例足以让您入门。
-
GetSupplierById方法应该在调用之前初始化。
标签: visual-studio-2010 unit-testing repository-pattern fakeiteasy