2016-02-12 66 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; 
});