[英]Writing Unit Tests with ODataQueryOptions
我是新手为WebAPI编写测试用例。 我曾经看到过类似的问题,但没有回答,但我想知道如果他们将ODataQueryOptions
作为参数的一部分,我将如何测试我的API。 见下文:
public IQueryable<Item> GetByIdAndLocale(ODataQueryOptions opts,
Guid actionuniqueid,
string actionsecondaryid)
我需要moq吗? 如果是这样,这看起来怎么样? 任何帮助,将不胜感激。
对于ODataQueryOptions透视图,您可能希望测试所有OData查询选项是否可以与您的Function一起使用。 首先,您需要创建一个ODataQueryOptions实例。 这是一个例子:
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, requestUri);
ODataQueryContext context = new ODataQueryContext(EdmCoreModel.Instance, elementType);
ODataQueryOptions options = new ODataQueryOptions(context, request);
因此,您需要创建自己的EDM模型来替换EdmCoreModel.Instance ,并将requestUri替换为您的查询。 ODataQueryContext中的elemntType是“正在查询的集合的元素的CLR类型”。
我不能从措辞中说出来,但上面的调用(GetByIdAndLocale)是你试图测试的Web API,还是你试图测试调用它的东西?
一个使用模拟或存根来替换被测单元(UUT)中的依赖项。 如果您正在测试GetByIdAndLocale(),那么您不会模拟它,如果它调用其他将ODataQueryOptions作为参数的东西,您可以使用Moq来存根/模拟该调用。
如果你正在测试一些调用GetByIdAndLocale()的单元,那么,是的,你可以使用它。 你究竟是如何做到这一点取决于目标(检查传递正确的值与检查返回的IQueryable是否正确处理),基本上与It.IsAny()或某些匹配器匹配。
你想测试哪个?
GetByIdAndLocale(),它调用它或它调用的东西(未显示)?
你有兴趣验证什么?
是否传递了正确的选项或处理来自模拟调用的返回?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.