Alb*_*Gao 8 javascript ecmascript-6 jest es6-class
class TestObject {
constructor(value) {
if (value === null || value === undefined) {
throw new Error('Expect a value!');
}
}
}
describe('test the constructor', () => {
test('it works', () => {
expect(() => {
new TestObject();
}).toThrow();
});
test('not work', () => {
expect(new TestObject()).toThrow();
});
});
Run Code Online (Sandbox Code Playgroud)
2这里的测试用例,一个工作,另一个不工作.
该消息的失败消息not work如下:
●测试构造函数>不工作
期待一个价值!
Run Code Online (Sandbox Code Playgroud)at new TestObject (tests/client/utils/aaa.test.js:4:11) at Object.<anonymous> (tests/client/utils/aaa.test.js:17:12) at Promise (<anonymous>) at <anonymous> at process._tickCallback (internal/process/next_tick.js:188:7)
为什么我需要在函数调用中包装该调用,当函数只返回一个普通值,甚至是一个promise时,我们不需要包装,我们可以用它async/await来检查expect()而不是在里面创建一个函数expect().
这里发生了什么?
Est*_*ask 16
这里
expect(new TestObject()).toThrow();
Run Code Online (Sandbox Code Playgroud)
new TestObject()首先计算,然后expect(...),然后...toThrow(),按照操作者的优先级.当new TestObject()抛出,什么都无所谓.
这就是为什么toThrow期望一个应该抛出的函数:
expect(() => {
new TestObject();
}).toThrow();
Run Code Online (Sandbox Code Playgroud)
这样它try..catch在被调用时可以在内部包装.
它在Jasmine toThrow和Chai to.throw断言中也有类似的作用.
| 归档时间: |
|
| 查看次数: |
1459 次 |
| 最近记录: |