是否可以设置Sinon Fake Server来响应某些路由,例如/ products而不是/ orders。
我的情况是:我没有使用Sinon Fake Server进行单元测试,我想在API还没有为应用程序的给定区域准备好的情况下伪造服务器。我希望应用程序在所有情况下调用真实服务器,但是当它调用/产品时,我希望sinon为我做出回应。
我可以暂时将Sinon的引用添加到产品页面,直到我获得真正的API然后将其删除,但理想情况下我希望将所有这些与实际实现隔离开来。现在我在main.js文件上有一个UseFakeServer标志,用于确定sinon是否打开。我的假服务器有一个RespondWith列表,但如果找不到路由,我会得到404而不是试图去真正的服务器。假服务器AutoRespond设置为true。
不确定它是否有所作为,但我在前端使用主干。
谢谢!
答案 0 :(得分:0)
假设您正在通过HttpXMLRequest执行API请求并至少使用Sinon 1.3.0,您应该使用sinon.useFakeXMLHttpRequest,然后您就可以过滤哪些请求应该伪造。
将Sinon.JS用于模型或部分集成/功能时 测试时,您可能想要伪造一些请求,同时允许其他请求 进入后端服务器。过滤后
FakeXMLHttpRequest
s(Sinon 1.3.0中的新内容),你可以。
FakeXMLHttpRequest.useFilters
默认为false。当设置为true时,Sinon 如果某些请求应该“未完成”,则会检查添加的过滤器。
FakeXMLHttpRequest.addFilter(fn)
添加一个过滤器,决定是否 或者不伪造请求。当xhr.open为时,将调用过滤器 调用,使用完全相同的参数(方法,url,async,用户名, 密码)。如果过滤器返回true,则请求不会伪造。
因此,例如,您希望Sinon处理所有/ products产品的请求都不会像
那样sinon.FakeXMLHttpRequest.useFilters = true;
sinon.FakeXMLHttpRequest.addFilter(function(method, url, async, username, password) {
return /\/products/g.test(url);
});