如何测试调用服务并在对象中传播的方法。
long AddFileDownloadEntry(FileDownloadEntry fde);
我理解在涉及某些逻辑时如何进行单元测试,但是这个服务只是传入一个对象,对象中的数据被插入到数据库中。
编辑:
抱歉,我不清楚,我正在尝试在服务中测试该方法。
答案 0 :(得分:1)
答案 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)
通常,您无法对这些集成点进行单元测试。您可以使用适配器包装方法调用,并且可以测试适配器的使用情况,但实际调用不会被测试覆盖。这就是在集成点发生的事情 - 最终你需要调用服务,与数据库通信,使用文件系统等等。