Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何测试我的函数是否返回jest中另一个类的实例_Javascript_Jestjs_Ts Jest - Fatal编程技术网

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个。这是另一个错误。我不知道。谢谢,这是可行的,但是我的代码从类返回了一个承诺。我已经编辑了这个问题。请在问题描述中提供类定义。