Nit*_*esh 3 javascript unit-testing node.js jestjs
我试图对节点中的一个函数进行单元测试,无论任何条件如何,该函数都会引发错误。这是我的节点函数定义。
public testFunction() {
throw new Error('Test Error');
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,每当调用该函数时,它总是会抛出错误。我尝试使用 jest .toThrow(error?)方法对此函数执行单元测试。我无法按预期对该功能进行单元测试。
下面提到的是我编写的测试用例,并附上了我在执行相同测试时遇到的错误的屏幕截图。
测试用例 #1
it('Should throw test error', (done) => {
const testClass = TestClassService.getInstance();
expect(testClass.testFunction()).toThrow();
});
Run Code Online (Sandbox Code Playgroud)
测试用例 #2
it('Should throw test error', (done) => {
const testClass = TestClassService.getInstance();
expect(testClass.testFunction).toThrow();
});
Run Code Online (Sandbox Code Playgroud)
测试用例 #3
在这篇博客中,提到了
如果我们希望函数对某些输入参数抛出异常,关键点是我们必须传入函数定义,并且不要在期望内部调用我们的函数。
所以我将我的测试用例更新为
it('Should throw test error', (done) => {
const testClass = TestClassService.getInstance();
expect(() => testClass.testFunction()).toThrow();
});
Run Code Online (Sandbox Code Playgroud)
但它抛出了类似的错误
我的实施有什么问题?对抛出错误对象的函数进行单元测试的正确方法是什么?
你的第三次尝试是对的。唯一的问题是您将done回调包含在测试定义中。这告诉测试它是异步的,并且它希望您done在测试完成后调用回调。
done由于您的测试不是异步的,因此删除测试定义中的回调就足够了:
it('Should throw test error', () => {
const testClass = TestClassService.getInstance();
expect(() => testClass.testFunction()).toThrow();
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8232 次 |
| 最近记录: |