任何人都可以给我一个编写测试用例的例子来检查是否 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():
});
答案 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
希望有所帮助