我目前正在评估ServiceStack(在.Net中创建基于休息的服务)。其中一个感兴趣的领域是测试方面。我的休息服务将注入一些应用程序服务(目前使用Autofac)。我需要的是一种机制来测试其余层并在我的应用层上定义期望(通过MOQ),所以我没有进行集成测试,而是单元测试这一层?
关于如何做到这一点的任何想法?
答案 0 :(得分:12)
ServiceStack Service就像任何普通的C#Service类一样,可以像任何其他类一样以非常相同的方式进行模拟。 ServiceStack服务的最小依赖性是实现无依赖性IService
接口标记,并且任何服务只接受Request DTO并返回任何对象。
单元测试ServiceStack服务的一种方法是使用DirectServiceClient作为seen in this example,这样做的好处是它允许你使用相同的单元测试作为集成测试 - 测试所有不同的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"));