gpt4 book ai didi

javascript - 如何跟踪使用特定参数调用函数的次数

转载 作者:行者123 更新时间:2023-11-30 17:26:12 25 4
gpt4 key购买 nike

我正在尝试设置一个 jasmine 测试,而不只是跟踪一个函数被调用的次数。我想跟踪使用特定参数调用函数的次数。

这是我当前的测试规范:

describe('fizzBuzz', function(){
beforeEach(function(){
// console.log = jasmine.createSpy('log');
spyOn(console, 'log');
fizzBuzz();
})

it("should test for the fizzBuzz's console output", function () {
expect(console.log).toHaveBeenCalledWith('FizzBuzz');
});
it('tracks how many times FizzBuzz is called', function(){
expect(console.log.callCount).toEqual(6);
});
})

在我的第二个规范中,callCount 等于调用 console.log 的次数。我想跟踪使用参数“FizzBu​​zz”调用它的次数。有没有办法将我的第一个规范与第二个规范联系起来?我尝试了很多变体,但无法找到解决方案。

这是我要测试的代码:

var fizzBuzz = function(){
var start = 1;
while(start <= 100){
if(start % 3 === 0 && start % 5 === 0){
console.log('FizzBuzz');
} else if (start % 3 === 0){
console.log('Fizz');
} else if (start % 5 === 0){
console.log('Buzz');
} else {
console.log(start);
}
start++;
}
};

我正在使用 console.log 参数来确定代码是否正确。例如:如果使用参数 FizzBu​​zz 调用 console.log 100 次中有 6 次,他们的代码将遵守准则。

更新:

来自测试的当前错误:

fizzBuzz tracks how many times console.log('FizzBuzz') is called.
✘ TypeError: undefined is not a function
at null.<anonymous> (http://localhost:7357/EJSLoops.js:31:43)
at jasmine.Block.execute (http://localhost:7357/testem/jasmine.js:1064:17)
at jasmine.Queue.next_ (http://localhost:7357/testem/jasmine.js:2096:31)
at jasmine.Queue.start (http://localhost:7357/testem/jasmine.js:2049:8)
at jasmine.Spec.execute (http://localhost:7357/testem/jasmine.js:2376:14)
at jasmine.Queue.next_ (http://localhost:7357/testem/jasmine.js:2096:31)
at onComplete (http://localhost:7357/testem/jasmine.js:2092:18)
at jasmine.Spec.finish (http://localhost:7357/testem/jasmine.js:2350:5)
at null.onComplete (http://localhost:7357/testem/jasmine.js:2377:10)
at jasmine.Queue.next_ (http://localhost:7357/testem/jasmine.js:2106:14)

最佳答案

var fizzBuzz = function(){
var start = 1;
while(start <= 100){
if(start % 3 === 0 && start % 5 === 0){
console.log('FizzBuzz');
} else if (start % 3 === 0){
console.log('Fizz');
} else if (start % 5 === 0){
console.log('Buzz');
} else {
console.log(start);
}
start++;
}
};

describe('fizzBuzz', function(){
beforeEach(function(){
// console.log = jasmine.createSpy('log');
spyOn(console, 'log');
fizzBuzz();
});

it("should test for the fizzBuzz's console output", function () {
expect(console.log).toHaveBeenCalledWith('FizzBuzz');
});

it("tracks how many times console.log('FizzBuzz') is called", function(){

var callcount = console.log.calls.count();
var paramcount = 0;
for(var i = 0; i < callcount; i++){
if(console.log.calls.argsFor(i) == 'FizzBuzz'){
paramcount++;
}
}
expect(paramcount).toEqual(6);

});
});

关于javascript - 如何跟踪使用特定参数调用函数的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24210851/

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