1

how to test method that calls a service and passess in an object.

long AddFileDownloadEntry(FileDownloadEntry fde);

I understand how to unit test when there is some logic involved, but this service just passes in an object and the data in the object is inserted into the database.

Edit:

Sorry I wasn't clear , I'm trying to test the method in the service.

4

3 回答 3

1

我建议模拟该服务并验证

  • 预期方法被调用的预期次数
  • 使用预期的参数调用预期的方法。
于 2012-10-30T18:35:58.743 回答
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测试库。

顺便说一句,默认起订量将通过引用比较传递的参数。如果您希望它们按值进行比较,则应覆盖EqualsonFileDownloadEntry或手动验证参数。

于 2012-10-30T18:36:03.900 回答
1

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

于 2012-10-30T18:36:25.070 回答