Jasmine:如何测试用户输入?

Jasmine: How to test a user input?

我编写了以下 html 文件:

<!DOCTYPE html> <html lang="en"> <head>
    <meta charset="UTF-8">
    <title></title> </head> <body>
    <h1> HELLO WORLD </h1>
    <button type="button"> CLICK HERE</button>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
    <script>
        $('button').click(function() {
            $('h1').text("Thank you");
            var ans = prompt("Please type your age");
            if (ans > 80) {
                $('h1').text("You're old");
            }
        })
    </script> </body> </html>

我想测试一下,一旦用户点击按钮并给出 80 岁以上的年龄,页面就会按预期运行并且 h1 标签文本变为 "You're old"。

我的问题是如何编写 Jasmine 规范来测试此功能?

您需要使用"Spy"对象来拦截"prompt"函数和return您自己的值。检查字幕文本后。代码可能看起来像 ...

deascribe("test inline function:", function() {
  it("caption should be 'too old' for age of more than 80", function () {
    spyOn(window, 'prompt').and.returnValue(81);
    $('button').click();
    expect($('h1').text()).toBe("You're old");
  });
});