順序付きの Sinon-Chai アサーション
動機
Sinon-Chai は、Sinon.JS 用の Chai アサーションを提供します。残念なことに、このアサーションはスパイが特定の順序で複数回呼び出されたことを確実にしません。これにより、ぎこちなく流暢でないアサーションが生じる可能性があります
var spy = sinon.spy();
[1, 2, 3].forEach(spy);
expect(spy.getCall(0).args[0]).to.equal(1);
expect(spy.getCall(1).args[0]).to.equal(2);
expect(spy.getCall(2).args[0]).to.equal(3);
sinon-chai-in-order
を使用すれば、代わりに次のように述べることができます
expect(spy).inOrder.to.have.been.calledWith(1)
.subsequently.calledWith(2)
.subsequently.calledWith(3);
セットアップ
Node では、npm
を使用してインストールするだけです。
$ npm install sinon-chai-in-order
テストにおいて、Chai でプラグインを使用します。また sinon-chai
も使用していることを確認してください。そうしないと、ネストされたアサーションが機能しません。
import chai, {expect} from 'chai';
import sinonChai from 'sinon-chai';
import sinonChaiInOrder from 'sinon-chai-in-order';
chai.use(sinonChai);
chai.use(sinonChaiInOrder);
このプラグインは UMD 形式で配布されるため、どこでも使用できます。ただし、ES6 モジュールとしてエクスポートされます。ES5 を使用している場合は、次を使用してください
chai.use(require('chai-react-element').default);
参加
セットアップ
このプロジェクトはビルドとテストに Gulp を使用し、ブラウザ内での実行とデバッグに webpack-dev-server を使用します。プロジェクトをインストールするには、npm install を実行するだけです。
開発環境を起動するには、npm start を実行するか、Gulp がグローバルにインストールされている場合は gulp dev を実行します。これにより、Mocha を使用してテストが実行され、さらに webpack-dev-server がポート 8080 で起動します。テストを実行するには、npm test(または gulp test)を使用します。
課題
見つけた問題については、プロジェクトの GitHub レポジトリに課題を開いてください。課題の中で問題について議論する前に、プルリクエストを作成しないでください。
プルリクエスト
テスト駆動開発を使用して、提出物を開発してみてください。少なくとも、変更がテストによって十分に網羅されており、コードがクリーンであることを確認してください。