2016-10-12 9 views
1

私はChaiと一緒にMochaを使ってテストします。かなり難しいです値の代わりにChaiプリントアサーションのパラメータ名を作る方法

このような場合に存在すると、未定義の期待

:あなたがブラウザでマウスの左クリックでテストケースを展開するとモカは、全体のテストのコードを示しているが、チャイの主張のいずれかが失敗したときに、私のような何かを得ますテキスト記述が最初に第2引数としてアサーションに与えられていないかどうかを調べる。

のようなものを取得する方法期待foo.barが

P.S.存在するがあります私はwebpackを使用するので、アサーションの行番号は何も意味しません(webpackによって生成されたファイルを見つけることは可能ですが、それは難しい)。

答えて

1

Chaiには、期待している種類のレポートを取得するための機能はありません。多くの場合、Chaiによって作成された在庫メッセージは、問題の原因をすばやく見つけるほど正確ではないことがわかります。そのため、カスタムメッセージを設定します。例えば:expect(foo, "foo").to.exist

it("should test promise throwing error",() => { 
    const foo; 
    expect(foo, "foo should exist").to.exist; 
}); 

expect(...).to.exist"... should exist"の冗長性があなたを悩ます場合

は、あなたのニーズに十分に記述された文字列にメッセージを短くすることができます。手作業を完全に排除するわけではありませんが、手作業を削減します。

自動解決のために、渡されるパラメーターの名前を抽出できるexpectのラッパーを記述する必要があります。それは簡単なことではありません。

+0

ありがとうございました。私が理解しているように、答えは:今すぐチャイを使ってそれを行う方法があります。 Mochaはすべてのテストケースでそれを実行しているので少し奇妙です。 – Slav

+1

あなたは正しく理解しています。関数のソースを表示することは、JavaScript標準に組み込まれています。 'fn'が関数である場合、ソースを取得するために' fn.toString() 'を実行することができます(そして、これはまさにMochaの動作です:' this.body = || '').toString(); ')。関数が呼び出されたときに使用されたJavaScriptの式を見つけることは、まったく異なる魚のケトルです。あなたは['esprima'](http://esprima.org/)のようなものを使うことができますが、esprimaは多くの助けになるかもしれませんが、esprimaが作成するASTを使ってやることはまだたくさんあります。やりたい – Louis

関連する問題