2016-02-12 65 views
0

我正在用mocha编写测试,用于检查从休息api轮询的更改状态是否正确呈现。是否有可能改变模拟终点在测试过程中返回的内容?我尝试覆盖模拟的端点,并使用var作为数据并更改它,但都不起作用。在摩卡测试中更改jquery-mockjax返回数据

随着覆盖:

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() 
    } 
} 

回答

0

我将通过建立custom handler function与基本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; 
});