0

我正在用 mocha 编写测试,检查从 rest api 轮询的变化状态是否正确呈现。是否可以在测试中间更改模拟端点返回的内容?我尝试过覆盖模拟端点并var用作数据并更改它,但都不起作用。

使用覆盖:

it("should render correctly") {
  loadPage(done, {init: function() {
    testUtils.mockjax("/url", {"data": "data"})
  }, onload: function() {
    expect($$("#data")).to.be.visible()
    testUtils.mockjax("/url", {"data": ""})
    clock.tick(5000)
    expect($$("#data")).not.to.be.visible() # does not work
    ...
    done()
  }
}

带变量:

it("should render correctly") {
  var data = {"data": "data"}
  loadPage(done, {init: function() {
    testUtils.mockjax("/url", data)
  }, onload: function() {
    expect($$("#data")).to.be.visible()
    data =  {"data": ""}
    clock.tick(5000)
    expect($$("#data")).not.to.be.visible() # does not work
    ...
    done()
  }
}
4

1 回答 1

0

我会通过设置自定义处理函数而不是基本 url 和数据匹配来做到这一点。您需要在测试块之前设置此模拟,但随后您可以检查传入的请求数据并确定是否匹配以及返回什么:

$.mockjax(function(requestSettings) {
  if ( requestSettings.url === '...' ) {
    return {
      responseText: "foo"  // you can change this based on the incoming request
    };
  }
  // If you get here, there was no match
  return;
});
于 2016-02-12T14:05:08.087 回答