Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我如何用Karma/Jasmine测试窗口提示和确认?_Javascript_Tdd_Karma Jasmine_E2e Testing - Fatal编程技术网

Javascript 我如何用Karma/Jasmine测试窗口提示和确认?

Javascript 我如何用Karma/Jasmine测试窗口提示和确认?,javascript,tdd,karma-jasmine,e2e-testing,Javascript,Tdd,Karma Jasmine,E2e Testing,我是TDD的新手,我一直在做一些reddit的编程提示来学习它。这是一个首字母缩略词生成器,它要求转换一个字符串,显示该字符串,然后询问用户是否要生成另一个字符串 我的问题是,我不知道如何编写测试来填写提示,然后点击ok按钮。再次询问时,请选择“确定”或“取消”按钮 (function(ns, undefined) { ns.generateAcronym = function() { var s = window.prompt("Enter the words

我是TDD的新手,我一直在做一些reddit的编程提示来学习它。这是一个首字母缩略词生成器,它要求转换一个字符串,显示该字符串,然后询问用户是否要生成另一个字符串

我的问题是,我不知道如何编写测试来填写提示,然后点击ok按钮。再次询问时,请选择“确定”或“取消”按钮

(function(ns, undefined)
{
    ns.generateAcronym = function()
    {
        var s = window.prompt("Enter the words to be converted into an acronym.");
        var matches = s.match(/\b(\w)/g);
        var acronym = matches.join("").toUpperCase();
        if(window.confirm("Your acronym is: "+acronym+". Would you like to generate another?"))
        {
            ns.generateAcronym();
        }

    };

})(window.pprompts = window.pprompts || {});


pprompts.generateAcronym();

好吧,我想我知道了。如果有谁有更好的方法,我很想看看/读一下:)

我意识到我可以把所有这些都放到一个
it
块中,但我喜欢看到
执行了2次成功中的2次成功
而不是
执行了1次成功中的1次成功

describe('Acronym Generator', function() {

    beforeEach(function()
    {
        spyOn(window, "prompt").and.returnValue("Java Script Object Notation");
        spyOn(window, "confirm");
        pprompts.generateAcronym();
    });


    it('should generate a window prompt', function() {
        expect(window.prompt).toHaveBeenCalledWith("Enter the words to be converted into an acronym.");
    });

    it('should generate a confirm dialog with the proper acronym', function() {
        expect(window.confirm).toHaveBeenCalledWith("Your acronym is: JSON. Would you like to generate another?");
    });
});

我认为这仍然是处理对话的最佳/适当方式。如果您只使用
tohavebeencall()
,将
expect
s与确切的措辞分离,然后添加一个不同的测试部分,专门用于首字母缩略词的生成,这会更好,但这可能有点迂腐。