用于动态字符计数的Jasmine单元测试用例

时间:2017-11-24 05:21:46

标签: javascript jquery jasmine

任何人都可以给我一个编写测试用例的例子来检查是否      keyup事件中的函数在jquery和jasmine中调用。      我对jquery和jasmine相当新,所以很抱歉这些错误。      当用户在输入字段中输入字符时,此程序显示剩余的字符数。并且我遇到了测试用例      我尝试如下

fixture.html:这是装置

 <input id="text" name="text" size="100" maxlength="65"></input>
 <span id="count"></span>

script.js:这是脚本文件,其中包含用于计算剩余量的代码     字符

$(document).ready(function () {
    var txt = $('#text');
    var remainingChar = $('#count');
    var maxLengthBox = txt.attr('maxLength');
    remainingChar.html(maxLengthBox);

    txt.keyup(function () {
        updateChars(remainingChar, maxLengthBox, txt)
    });
});

function updateChars(remainingChar, maxLengthBox, txt) {
    var remChar = maxLengthBox - $(txt).val().length;
    if (remChar < 0) {
        remChar = 0;
    }
    remainingChar.html(remChar);
    return remChar;
}

这是其中一个测试用例请在这里帮助我,因为它在触发keyup后没有调用该函数我该如何测试它 1.如果函数updateChars(remainingChar,maxLengthBox,txt)被调用并执行了 2.如何检查返回正确的remainingChar计数

TestCase从这里开始:
代码工作正常,但我需要帮助编写测试用例&#34;检查是否显示正确的字符数&#34;在触发keyup函数时,在测试用例中没有为我调用内部updateChars函数

beforeEach(function () {
    loadFixtures('Fixture.html');
    txt = $('#text');
    remainingChar = $('#count');
    maxLengthBox = txt.attr('maxLength');
    remainingChar.html(maxLengthBox);
});

it("checking remaining characters", function () { 
    txt.val('hello');   //entering hello into that text field

    //triggering keyup and expecting this to call the updateChars function
    txt.trigger('keyup');  

    expect(updateChars).toHaveBeenCalled():
});

1 个答案:

答案 0 :(得分:1)

好的,我假设您正在浏览器中直接运行测试,对吗?根据您的代码,我假设updateChars函数是全局函数,因此它附加到window

说到你需要的是spy,在jasmine我们使用函数spyOn,这是一个例子:

beforeEach(function() {
    //here we setup the "spy"
    spyOn(window, 'updateChars');
});

it("checking remaining characters", function() { 
    txt.val('hello');
    txt.trigger('keyup');

    expect(updateChars).toHaveBeenCalled():
});

这只是一个需要根据您的需求进行调整的说明性示例。

一些注释
我在你的代码中看到这一行loadFixtures('Fixture.html');,我不知道它实际上是做什么的,但如果它是异步调用,那么你需要在{{1}中使用done回调}。

异步调用的另一个说明性示例:

beforeEach

希望有所帮助