服务堆栈和Mocking,任何教程?

JD.*_*JD. 11 testing continuous-integration moq servicestack

我目前正在评估ServiceStack(在.Net中创建基于休息的服务).其中一个感兴趣的领域是测试方面.我的休息服务将注入一些应用程序服务(目前使用Autofac).我需要的是一种机制来测试其余层并在我的应用层上定义期望(通过MOQ),所以我没有进行集成测试,而是单元测试这一层?

关于如何做到这一点的任何想法?

myt*_*thz 12

一个ServiceStack服务就像任何普通的C#类服务,可以在完全像任何其他类以同样的方式被嘲笑.ServiceStack Service的最小依赖性是实现无依赖性IService接口标记,并且任何服务只接受Request DTO并返回任何对象.

单元测试ServiceStack服务的一种方法是使用DirectServiceClient,如本示例所示,这样做的一个好处是它允许您使用相同的单元测试作为集成测试 - 测试所有不同的XML,JSON,JSV和SOAP端点.

否则你可以像其他任何类一样进行单元测试和模拟,例如:

var service = new TestService {
   MyDependency = new Mock<IMyDependency>().Object
};
var response = service.Get(new Test { Id = 1 });
Assert.That(response.Result, Is.EqualTo("Hello, 1"));
Run Code Online (Sandbox Code Playgroud)

  • 当我以这种方式模拟服务时,过滤器属性似乎没有被触发,那是预期的行为吗? (2认同)