【发布时间】:2023-04-10 21:02:01
【问题描述】:
对于抛出异常的代码,我需要将期望包装在一个匿名函数中。否则在 Mocha 捕捉到它之前会抛出异常。 请参阅此 StackOverflow answer。
但包装似乎有副作用。
以下代码在包装时表现不同。这似乎是一个 Chai 问题。
chai = require 'chai'
expect = chai.expect
describe 'Weird', ->
obj =
name: 'kalle'
it 'not wrapped', () ->
expect(obj).to.have.property 'name', 'kalle'
it 'wrapped', () ->
expect(->obj).to.have.property 'name', 'kalle'
我手工制作的 Javascript 版本:
var expect = require('chai').expect;
describe('Weird', function() {
obj = {name: 'kalle'};
it('not wrapped', function() {
expect(obj).to.have.property('name', 'kalle');
});
it('wrapped', function() {
expect(function() {return obj}).to.have.property('name', 'kalle');
});
});
失败看起来像这样:AssertionError: expected [Function] to have a property 'name' of 'kalle', but got ''
Weird
✓ not wrapped
1) wrapped
1 passing (10ms)
1 failing
1) Weird wrapped:
+ expected - actual
+kalle
为什么包装会产生不同的结果?
提前致谢!
【问题讨论】:
-
是在 javascript 和 coffeescript 版本中都失败了,还是在 CS 版本中失败了?
-
@JedSchneider:都失败了。
-
我预料到了。我将在下面提供答案。
标签: javascript coffeescript mocha.js chai