例外をスローするコードの場合、期待値を無名関数でラップする必要があります。そうしないと、Mocha がキャッチする前に例外がスローされます。この StackOverflowの回答を参照してください。
しかし、ラッピングには副作用があるようです。
次のコードは、ラップされると動作が異なります。チャイの問題のようです。
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
ラッピングによって結果が異なるのはなぜですか?
前もって感謝します!