更改 jquery-mockjax 在摩卡测试过程中返回数据

Changing jquery-mockjax return data in the middle of a mocha test

本文关键字:过程中 返回 数据 测试过程 测试 jquery-mockjax 摩卡 更改      更新时间:2023-09-26

我正在使用摩卡编写测试,以检查从 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()
  }
}

我会通过设置自定义处理程序函数而不是基本的 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;
});