1

使用servicestack,有使用类型等进行单元测试的例子,这里有一个例子: GetFactorial

我想通过与上述类似的测试来测试我的 REST 样式服务。

这是一个示例 REST 单元测试FileService

请注意,在 PUT 单元测试中,必须在 URL 文本中而不是在类参数中指定 Path 参数。另一个例子是在这里,我们有非常好的请求模型,必须被翻译成 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,我们可以编写服务,并且可以从许多不同类型的客户端调用它们——我想这样编写我的单元测试。

这可能吗?

4

1 回答 1

2

如果你用路由变量装饰你的 DTO 并使用 ServiceStack 的“新 API”,那么它可以自动发现路由。您可以通过编写非常少的代码而摆脱困境,并且仍然可以获得强大的类型化 rest 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);
   ...
}
于 2013-01-29T14:42:04.267 回答