0
我有以下(簡化)的JavaScript模塊,它使用jQuery Cookie插件來檢查cookie是否啓用。如果禁用Cookie它警告用戶:QUnit/Sinon:測試一個函數,檢查cookie是否啓用
var cookiePolicy = (function() {
var cookiesEnabled = function() {
return $.cookie('check', 'valid', { expires: 1 }) && $.cookie('check') == 'valid';
};
return {
updateCookiePolicy: function() {
if (!cookiesEnabled()) {
$("#cookie-policy").append('<p id="cookie-warning">Cookies are disabled. Some features of this site may not work correctly.</p>');
}
}
};
})();
我有以下的單元測試:
QUnit.test("When cookies are enabled the cookie policy text remains unchanged", function (assert) {
sinon.mock($).expects("cookie").once().withExactArgs("check", "valid", { expires: 1 });
sinon.mock($).expects("cookie").once().withExactArgs("check").returns("valid");
cookiePolicy.updateCookiePolicy();
assert.equal(0, $('#cookie-warning').length, "Failed!");
});
測試失敗,因爲「cookie被包裹已」。我認爲這是因爲我嘲笑$ .cookie的設置和閱讀。如何在本次測試中嘲笑$ .cookie的設置和閱讀?
您是否收到來自QUnit的錯誤?或者只是一個失敗的測試?你可以粘貼整個輸出作爲你的問題的更新?我認爲解決方案是適當地檢查'cookie'模擬的預期發生,每次你嘲笑'cookie'它產生一個新的對象,但你實際上並沒有檢查返回值。 – jakerella 2014-11-04 15:46:06