gpt4 book ai didi

javascript - 当输入参数为空时,如何编写函数返回的 Jasmine 期望?

转载 作者:太空宇宙 更新时间:2023-11-04 16:19:19 25 4
gpt4 key购买 nike

我有以下 JavaScript 函数:

function(fieldObject, value) {

if (!value) {
return;
}

// call some other functions
}

是否可以在 if 语句中编写一个返回该函数的期望,而不编写多个不调用 if 语句之后的所有其他函数的期望?

最佳答案

这是一个非常有趣的问题:我不是 100% 确定是否有办法实现您所寻求的,但是我已经使用这个技巧来验证提前返回的状态(就像您的情况一样)

这是我如何使用它的 -

  • 使您的 void 方法返回 false 以退出处理。您可以不要在代码中使用这个返回值,但你可以测试它高效。
  • 如果您的方法预计返回一个值,但它有提前返回/中断,您仍然可以使用 return false 中断它。

用于说明上述场景的代码示例:

var testObj = {
voidLikeFunction : function(arg1){
if(!arg1){
return false;
} else {
console.log('Executes void like function..');
this.callAFunction();
this.callAnotherFunction();
this.callYetAnotherFunction();
}
},

callAFunction : function(){
console.log('callAFunction()');
},

callAnotherFunction : function(){
console.log('callAnotherFunction()');
},

callYetAnotherFunction : function(){
console.log('callYetAnotherFunction()');
},

expectedToReturnInt : function(arg1){
if(!arg1){
return false
} else {
var sum =0;
for(int i=0; i<10; i++){
sum += i;
}
return sum;
}
}
};

describe('testVoidLikeFunc', function(){
it('testEarlyReturn', function(){
var val = testObj.voidLikeFunction();
expect(val).toBe(false);
});
it('testLateReturn', function(){
spyOn(testObj, 'callAFunction').and.callThrough();
spyOn(testObj, 'callAnotherFunction').and.callThrough();
spyOn(testObj, 'callYetAnotherFunction').and.callThrough();
var dummyParam = true;
testObj.voidLikeFunction(dummyParam);
expect(testObj.callAFunction).toHaveBeenCalled();
expect(testObj.callAnotherFunction).toHaveBeenCalled();
expect(testObj.callYetAnotherFunction).toHaveBeenCalled();
});
});

describe('testExpectedToReturnInt', function(){
it('testEarlyReturn', function(){
var val = testObj.expectedToReturnInt();
expect(val).toBe(false);
});
it('testLateReturn', function(){
var dummyParam = true;
var val = testObj.expectedToReturnInt(dummyParam);
expect(val).toEqual(45);
});
});

关于javascript - 当输入参数为空时,如何编写函数返回的 Jasmine 期望?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40796119/

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