gpt4 book ai didi

javascript - 如何使用 sinon.js 模拟/ stub 回调函数?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:34:43 25 4
gpt4 key购买 nike

我想用 QUnit 和 Sinon.Js 编写单元测试。我有一个应用程序,用户可以在其中单击一个按钮,然后出现一个模式对话框来处理下载一些文件。用户可以关闭对话框,它会触发一个方法来运行以重置一些变量。我的测试代码:

$(function() {
$.fn.copy_button = function(){};

ln_download_view = new DownloadModalView();
ln_download_view.modal = {'modal': function() {}};
var download_modal_dialog = $('.download-modal');
download_modal_dialog.modal = function(param){};
var modal_mock = sinon.mock(ln_download_view.modal);
var download_modal_dialog_mock = sinon.mock(download_modal_dialog);

//Should be inserted, because ln_download_view.modal is mocked
//The close button even handler
$('#btn_close_modal').click(function(){
download_modal_dialog.modal('hide');
});

//Dirty stuff to do after the window closes
//Basicly the click triggers this event handler
$('.download-modal').on('hide',function() {
window.clearInterval(window.periodicalTimer);
});

$('div .option-container').click(function() {
if(!$(this).hasClass("selected-option"))
{
$('div #option-presenting').toggleClass("selected-option");
$('div #option-editing-and-presenting').toggleClass("selected-option");

$('.image').toggle();
}
});

module("views");
test("Download modal dialog is displayed", function(){
var modal_triggered = modal_mock.expects("modal").once();
ln_download_view.handleDownloadClick();
ok(modal_triggered.verify());
});

test("Download modal dialog is closed",function(){
var modal_triggered = download_modal_dialog_mock.expects("modal");
$('#btn_close_modal').trigger('click');
ok(modal_triggered.verify());
});
});

我不明白的是,我该如何测试/模拟/ stub 这段代码:

$('.download-modal').on('hide',function() {
window.clearInterval(window.periodicalTimer);
});

我还没有深入了解。

最佳答案

您不能模拟/ stub 匿名函数。但是您可以进行重构并 stub /模拟命名回调。

$('.download-modal').on('hide', onHide);

var onHide = function() {
window.clearInterval(window.periodicalTimer);
};

// ...

sinon.stub(onHide);

关于javascript - 如何使用 sinon.js 模拟/ stub 回调函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18242034/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com