問題点
chai.should
は Object
のプロトタイプに should
というメソッドを追加することで実装されているので、 Object
のプロトタイプを継承していない null
や undefined
は should
というメソッドを持たない。そのため、普段と同じ語順でテストしようとするとエラーになる。
null.should.be.null
undefined.should.be.undefined
# TypeError: 'null' is not an object (evaluating 'restDaysText(dest, src).sould')
解決策
chai.should()
の戻り値のオブジェクトを使う方法1
公式に提供されている方法を使う。普段と語順は違うがチェックできる。
var should = chai.should();
// example が `null` か `undefined` であることをテストする。
should.not.exist(example);
// example が `null` であることをテストする。
should.equal(example, null);
// example が `undefined` であることをテストする。
should.equal(example, undefined);
CoffeeScript の存在演算子を使う方法
CoffeeScript の存在演算子を使うと、普段と同じ語順で短くテストを書くことができる。
# example が `null` か `undefined` であることをテストする。
example?.should.be.false
-
How to assert null with should · Issue #90 · chaijs/chai よりコードを引用(コメント内意訳 +
undefined
のテストを追加) ↩