angularシードプロジェクトを使用して角度プロジェクトをセットアップし、テストにジャスミンテストフレームワークを使用します。
しかし、ジャスミンのドキュメントの多くは特に期待/マッチングロジックとスパイに関して無関係であるため、私は混乱して驚いています。
期待のために、私は次のようなジャスミンのドキュメントからのものを使用できると期待していました:
expect(...).toBeTruthy()
expect(...).toBeFalsy()
// etc...
これはどれも機能せず、代わりにチャイタイプのコードを書かなければならないようです:
expect(...).to.be.true;
expect(...).to.be.false;
// etc...
そして、スパイが次のような期待を書くことができるようにするには:
spyOn(foo, 'setBar');
// ...do some stuff
expect(foo.setBar).toHaveBeenCalled();
foo.setBar.calls.reset();
しかし、代わりに次のように書かなければなりません:
expect(foo.setBar.calls.length).to.equal(1);
// reset calls (this is particularly ugly)
foo.setBar.calls = [];
foo.setBar.argsForCall = [];
2つの質問:
- Jasmine と Chai のマッチングに関する一般的な推奨事項はありますか、またはその逆ですか? コミュニティではどちらが好まれますか? それとも、シード プロジェクトが追いついていない何らかの移行が行われているのでしょうか?
- 初心者として、私は Jasmine マッチングを好みます (特にスパイを使用する場合)。Chai よりも Jasmine を使用するためのうなり声テストを取得するにはどうすればよいですか?
また、Jasmine 2.0 と 1.3 を使用する karma-jasmine プラグインを see プロジェクトで使用できるようにするとよいでしょう。
ありがとう。
アップデート
2つの追加事項に注意する必要があります。次のような grunt と karma-jasmine を使用したテストを実行します。
grunt test:unit
karma.conf.js ファイルは次のようになります。
module.exports = function(config){
config.set({
basePath : '../',
files : [
'app/lib/angular/angular.js',
'app/lib/angular/angular-*.js',
'test/lib/angular/angular-mocks.js',
'app/js/**/*.js',
'test/unit/**/*.js'
],
exclude : [
'app/lib/angular/angular-loader.js',
'app/lib/angular/*.min.js',
'app/lib/angular/angular-scenario.js'
],
autoWatch : true,
frameworks: ['jasmine'],
browsers : ['Chrome'],
plugins : [
'karma-junit-reporter',
'karma-chrome-launcher',
'karma-firefox-launcher',
'karma-jasmine'
],
junitReporter : {
outputFile: 'test_out/unit.xml',
suite: 'unit'
}
})}
フレームワーク: ['jasmine'] ではジャスミンを使用し、フレームワーク: ['mocha', 'chai'] では chai を使用すると考えました。