如何测试我的函数是否返回jest中另一个类的示例

whlutmcx  于 2023-08-01  发布在  Jest
关注(0)|答案(2)|浏览(117)

我是新的笑话测试。
我有一个这样的开关案例:

export const findType = async (name) => {
    switch(name){
        case "apple":
            return new AppleClass()
        case "mango":
            return new MangoClass()
        default:
            return new VegetableClass()
    }
}

字符串
现在,我想写一个jest测试用例来检查上面的switch用例。我的测试用例是这样的:

it('should return AppleClass', () => {
    expect(() => {
       let res =  findType("apple")
       console.log(res)
    }).toReturn(instanceof(AppleClass))
})


console.log(res)打印:

Promise{
     AppleClass {
           //some other stuff
         }
}


但我得到的错误是

Expression expected.ts(1109)
Expected 0 arguments, but got 1.


.toReturn(instanceof(AppleClass))


如何测试这个。任何帮助将是伟大的。

gc0ot86w

gc0ot86w1#

您必须以不同的方式设置传递给it的函数,因为instanceOf运算符需要检查对象,如下所示:

object instanceOf AppleClass

字符串
你应该尝试这样的东西:

it('should return AppleClass', () => {
let obj = findType("apple");
  let isApple = obj instanceof AppleClass;
  expect(isApple).toBe(true);
});


看到它工作here
在函数返回promise的情况下,测试应该像这样修改:

it('should return AppleClass', async () => {
let obj = await findType("apple");
  let isApple = obj instanceof AppleClass;
  expect(isApple).toBe(true);
});


我已经编辑了上面链接中的代码,对于返回Promise的函数,请检查它。

mzillmmw

mzillmmw2#

我认为这也会起作用:

it('should return AppleClass', async () => {
  let result = await findType("apple");

  expect(result).toBeInstanceOf(AppleClass);
});

字符串

相关问题