单元测试休息服务,不指定URL

时间:2013-01-28 23:51:25

标签: servicestack

使用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,我们可以编写服务,并且可以从许多不同类型的客户端调用它们 - 我想编写我的单元测试。

这可能吗?

1 个答案:

答案 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);
   ...
}