【问题标题】:How to make Sinon Fake server respond to some routes but not all of them如何让 Sinon Fake 服务器响应某些路由而不是所有路由
【发布时间】:2016-02-19 03:00:02
【问题描述】:

是否可以设置 Sinon Fake Server 响应某些路由,例如 /products 而不是 /orders。

我的场景是:我没有使用 Sinon Fake Server 进行单元测试,我想在 API 尚未为应用程序的给定区域准备好的情况下伪造服务器。我希望应用程序在所有情况下都调用真实服务器,但是当它调用 /products 时,我希望 sinon 为我响应它。

我可以暂时在产品页面中添加对 Sinon 的引用,直到获得真正的 API,然后将其删除,但理想情况下,我希望将所有这些与实际实现隔离开来。现在我的 main.js 文件中有一个 UseFakeServer 标志来确定 sinon 是否打开。我的假服务器有一个 RespondWith 列表,但如果在那里找不到路由,我会得到 404,而不是尝试去真正的服务器。假服务器 AutoRespond 设置为 true。

不确定它是否有区别,但我在前端使用主干。

谢谢!

【问题讨论】:

    标签: backbone.js sinon


    【解决方案1】:

    假设您通过 HttpXMLRequest 进行 API 请求,并且至少使用 Sinon 1.3.0,您应该使用 sinon.useFakeXMLHttpRequest,然后您就能够过滤哪些请求应该被伪造。

    当使用 Sinon.JS 进行模型或部分集成/功能时 测试,你可能想伪造一些请求,同时允许其他请求 通过到后端服务器。带过滤 FakeXMLHttpRequests(诗浓1.3.0新增),你可以。

    FakeXMLHttpRequest.useFilters 默认为假。当设置为真时,诗乃 如果某些请求应该是“未伪造的”,将检查添加的过滤器。

    FakeXMLHttpRequest.addFilter(fn) 添加一个过滤器来决定是否 或不伪造请求。过滤器将在 xhr.open 时调用 调用,使用完全相同的参数(方法、url、异步、用户名、 密码)。如果过滤器返回 true,则不会伪造请求。

    因此,例如,您希望所有对 /products 的请求不由 Sinon 处理,这将类似于

    sinon.FakeXMLHttpRequest.useFilters = true;
    sinon.FakeXMLHttpRequest.addFilter(function(method, url, async, username, password) {
        return /\/products/g.test(url);
    });
    

    http://sinonjs.org/docs/#server

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-05
      • 2018-06-02
      • 2017-03-06
      相关资源
      最近更新 更多