【发布时间】:2020-12-14 13:57:02
【问题描述】:
我有以下功能:
MarketingHandler = function () {
return {
Init: function () {
$(document).on("click", "#verify .modal-close", function () {
tryVerification();
});
}
}
function tryCommunicationPreferencesInterceptorAfterVerification() {
var overlayIsNotDismissed = CookieHelper.GetCookie("dismissed-overlay") == null
if (overlayIsNotDismissed && window.location.pathname === "/Home/") {
OverlayHelper.Display("save-preferences");
}
else if (overlayIsNotDismissed) {
// do something else
}
}
}();
$(document).ready(function () {
MarketingHandler.Init();
});
我正在尝试编写一个测试,显示应该调用OverlayHelper.Display("save-preferences");。这是我的尝试:
QUnit.test("Test", function (assert) {
MarketingHandler.Init();
if (CookieHelper.GetCookie("dismissed-overlay") != null) {
CookieHelper.DeleteCookie("dismissed-overlay");
}
sinon.stub(window.location, 'pathname').returns("/Home/");
var displayOverlaySpy = sinon.spy(OverlayHelper, 'Display');
var $fixture = $("#qunit-fixture");
$fixture.append(HTMLInjector());
$('#verify .modal-close').click();
assert.ok(displayOverlaySpy.calledOnceWith("save-preferences"), "overlay shown");
displayOverlaySpy.restore();
});
function HTMLInjector() {
return "<input type='hidden' id='verify .modal-close'/>"
}
但是,我在测试中得到“预期为真,结果为假”。谁能发现我在这里出错的地方?
【问题讨论】:
-
想知道您是否调用了两次
Init()可能与此有关...哦,还有,tryVerification方法不存在?应该是tryCommunicationPreferencesInterceptorAfterVerification吗?
标签: javascript unit-testing sinon qunit