Jea*_*eri 4 javascript unit-testing chai ecmascript-6
我正在使用Chai.should,我需要测试一个异常,但无论我尝试什么,我都无法让它工作.该文档只能说明expect:(
我有这个Singleton类,如果你尝试,会抛出一个错误
new MySingleton();
Run Code Online (Sandbox Code Playgroud)
这是抛出错误的构造函数
constructor(enforcer) {
if(enforcer !== singletonEnforcer) throw 'Cannot construct singleton';
...
Run Code Online (Sandbox Code Playgroud)
现在我想检查一下这种情况
it('should not be possible to create a new instance', () => {
(function () {
new MySingleton();
})().should.throw(Error, /Cannot construct singleton/);
});
Run Code Online (Sandbox Code Playgroud)
要么
new MySingleton().should.throw(Error('Cannot construct singleton');
Run Code Online (Sandbox Code Playgroud)
这些都不起作用.这是怎么做到的?有什么建议 ?
N. *_*sic 12
我知道这是一个有答案的问题,但我仍然想投入我的两分钱。
样式指南中有一个部分,即:http : //chaijs.com/guide/styles/#should-extras。那么这在实践中是什么样子的:
should.Throw(() => new MySingleton(), Error);
Run Code Online (Sandbox Code Playgroud)
这与接受的答案并没有什么不同,但我发现它更具可读性,并且更符合他们的指导方针。
这里的问题是你直接执行函数,有效地防止chai能够try{} catch(){}围绕它包裹一个块.
在调用甚至到达should-Property 之前抛出错误.
试试这样:
it('should not be possible to create a new instance', () => {
(function () {
new MySingleton();
}).should.throw(Error, /Cannot construct singleton/);
});
Run Code Online (Sandbox Code Playgroud)
或这个:
MySingleton.should.throw(Error('Cannot construct singleton');
Run Code Online (Sandbox Code Playgroud)
这让Chai为您处理函数调用.
| 归档时间: |
|
| 查看次数: |
7133 次 |
| 最近记录: |