使用servicestack,有一些使用类型等进行单元测试的例子。这是一个例子: GetFactorial
我想用类似于上面的测试来测试我的REST样式服务。
以下是REST单元测试FileService
的示例请注意,在PUT单元测试中,必须在URL文本中而不是在class参数中指定Path参数。另一个例子是here,我们有完美的请求模型,必须转换为URL。为了测试,我想摆脱在url中构建参数并使用与上面类似的系统,如下所示:
var response = restClient.Put<FilesResponse>(new Files { TextContents = ReplacedFileContents, Path = "README.txt" });
或
var singleCustomer = restClient.Get<Customer>(new Customer {Id=1};
这可能吗?
然后是DirectServiceClient。那会有帮助吗?最后,使用servicestack,我们可以编写服务,并且可以从许多不同类型的客户端调用它们 - 我想编写我的单元测试。
这可能吗?
答案 0 :(得分:2)
如果使用路径变量装饰DTO并使用ServiceStack的“新API”,那么它可以自动发现路径。您可以编写非常少的代码,并且仍然可以获得强大的类型化休息API。
您的代码可能如下所示:
Customer singleCustomer = restClient.Get(new Customer {Id=1});
请参阅https://github.com/ServiceStack/ServiceStack/wiki/New-Api
为了回应您的意见,您的DTO需要遵守IReturn界面:
[Route("/customer/{Id}")]
public Customer : IReturn<Customer> {
public int Id {get;set;}
}
下面的IRestClient接口现在可以使用您的DTO而无需指定类型,因为它需要一个IReturn对象。
public interface IRestClient
{
TResponse Get<TResponse>(IReturn<TResponse> request);
...
}