如何单位测试服务电话

时间:2012-10-30 18:32:39

标签: c# unit-testing

如何测试调用服务并在对象中传播的方法。

long AddFileDownloadEntry(FileDownloadEntry fde);

我理解在涉及某些逻辑时如何进行单元测试,但是这个服务只是传入一个对象,对象中的数据被插入到数据库中。

编辑:

抱歉,我不清楚,我正在尝试在服务中测试该方法。

3 个答案:

答案 0 :(得分:1)

我建议mocking服务和verify

  • 预期方法称为预期次数
  • 使用期望的参数调用预期的方法。

答案 1 :(得分:1)

如果您的方法的责任是调用服务并传入对象,那么您应该验证,调用了适当的服务方法,并传递了适当的对象。

怎么做?首先,您应该依赖于抽象(即在服务接口上)。然后你应该模仿这种依赖并设置期望):

FileDownloadEntry fde = // create entry
Mock<IFooService> serviceMock = new Mock<IFooService>();
serviceMock.Setup(s => s.AddFileDownloadEntry(fde)).Returns(someReturnValue);

SUT sut = new SUT(serviceMock.Object); // inject dependency
sut.YourMethod(); // act

serviceMock.VerifyAll();

此示例使用Moq测试库。

BTW 默认情况下,Moq将通过引用比较传递的参数。如果您希望按值进行比较,则应覆盖Equals上的FileDownloadEntry,或手动验证参数。

答案 2 :(得分:1)

通常,您无法对这些集成点进行单元测试。您可以使用适配器包装方法调用,并且可以测试适配器的使用情况,但实际调用不会被测试覆盖。这就是在集成点发生的事情 - 最终你需要调用服务,与数据库通信,使用文件系统等等。