Javascript 如何测试我的函数是否返回jest中另一个类的实例
我不太会开玩笑 我有一个这样的开关箱:Javascript 如何测试我的函数是否返回jest中另一个类的实例,javascript,jestjs,ts-jest,Javascript,Jestjs,Ts Jest,我不太会开玩笑 我有一个这样的开关箱: export const findType = async (name) => { switch(name){ case "apple": return new AppleClass() case "mango": return new MangoClass() default: r
export const findType = async (name) => {
switch(name){
case "apple":
return new AppleClass()
case "mango":
return new MangoClass()
default:
return new VegetableClass()
}
}
it('should return AppleClass', () => {
expect(() => {
let res = findType("apple")
console.log(res)
}).toReturn(instanceof(AppleClass))
})
object instanceOf AppleClass
it('should return AppleClass', () => {
let obj = findType("apple");
let isApple = obj instanceof AppleClass;
expect(isApple).toBe(true);
});
it('should return AppleClass', async () => {
let obj = await findType("apple");
let isApple = obj instanceof AppleClass;
expect(isApple).toBe(true);
});
现在,我想编写jest测试用例来检查上面的开关用例。我的测试用例如下所示:
export const findType = async (name) => {
switch(name){
case "apple":
return new AppleClass()
case "mango":
return new MangoClass()
default:
return new VegetableClass()
}
}
it('should return AppleClass', () => {
expect(() => {
let res = findType("apple")
console.log(res)
}).toReturn(instanceof(AppleClass))
})
object instanceOf AppleClass
it('should return AppleClass', () => {
let obj = findType("apple");
let isApple = obj instanceof AppleClass;
expect(isApple).toBe(true);
});
it('should return AppleClass', async () => {
let obj = await findType("apple");
let isApple = obj instanceof AppleClass;
expect(isApple).toBe(true);
});
控制台日志(res)打印:
但我也犯了同样的错误
Expression expected.ts(1109)
Expected 0 arguments, but got 1.
在
如何测试这个。任何帮助都很好。您必须以不同的方式设置传递给它的函数,因为instanceOf操作符需要检查一个对象,如下所示:
export const findType = async (name) => {
switch(name){
case "apple":
return new AppleClass()
case "mango":
return new MangoClass()
default:
return new VegetableClass()
}
}
it('should return AppleClass', () => {
expect(() => {
let res = findType("apple")
console.log(res)
}).toReturn(instanceof(AppleClass))
})
object instanceOf AppleClass
it('should return AppleClass', () => {
let obj = findType("apple");
let isApple = obj instanceof AppleClass;
expect(isApple).toBe(true);
});
it('should return AppleClass', async () => {
let obj = await findType("apple");
let isApple = obj instanceof AppleClass;
expect(isApple).toBe(true);
});
您应该尝试以下方法:
export const findType = async (name) => {
switch(name){
case "apple":
return new AppleClass()
case "mango":
return new MangoClass()
default:
return new VegetableClass()
}
}
it('should return AppleClass', () => {
expect(() => {
let res = findType("apple")
console.log(res)
}).toReturn(instanceof(AppleClass))
})
object instanceOf AppleClass
it('should return AppleClass', () => {
let obj = findType("apple");
let isApple = obj instanceof AppleClass;
expect(isApple).toBe(true);
});
it('should return AppleClass', async () => {
let obj = await findType("apple");
let isApple = obj instanceof AppleClass;
expect(isApple).toBe(true);
});
看到它工作
在函数返回承诺的情况下,测试应修改如下:
export const findType = async (name) => {
switch(name){
case "apple":
return new AppleClass()
case "mango":
return new MangoClass()
default:
return new VegetableClass()
}
}
it('should return AppleClass', () => {
expect(() => {
let res = findType("apple")
console.log(res)
}).toReturn(instanceof(AppleClass))
})
object instanceOf AppleClass
it('should return AppleClass', () => {
let obj = findType("apple");
let isApple = obj instanceof AppleClass;
expect(isApple).toBe(true);
});
it('should return AppleClass', async () => {
let obj = await findType("apple");
let isApple = obj instanceof AppleClass;
expect(isApple).toBe(true);
});
我已经编辑了上面链接中的代码,对于要返回承诺的函数,请检查它。btw是一个运算符(不带大括号)。@NinaScholz,toReturn(instanceof AppleClass)也按预期给出了错误0个参数,但得到了1个。这是另一个错误。我不知道。谢谢,这是可行的,但是我的代码从类返回了一个承诺。我已经编辑了这个问题。请在问题描述中提供类定义。