私はフロントエンド開発者で、TDD と BDD は初めてです。
私にはこの仕事があります。AJAX 呼び出しから受け取った json オブジェクトをテーブルに入力します。これをスイートと仕様でどのように説明しますか?
前もって感謝します
編集
MVC には BackboneJS を使用し、スパイ、スタブなどには sinon.js を使用しています。
私はフロントエンド開発者で、TDD と BDD は初めてです。
私にはこの仕事があります。AJAX 呼び出しから受け取った json オブジェクトをテーブルに入力します。これをスイートと仕様でどのように説明しますか?
前もって感謝します
編集
MVC には BackboneJS を使用し、スパイ、スタブなどには sinon.js を使用しています。
使用するライブラリについてはあまり言及されていないので、例として、ajaxリクエストがjQueryを使用したGETリクエストで構成されていると仮定します。
通常、これは次のようになります。
$.ajax({
url: 'http://server/populate_table',
data: {foo: 'bar'},
success: populate_table
});
また、サーバーが次のオブジェクトを返すと想定します{row: [1, 2, 3]}
。まず、サーバーが使用可能であることに依存したくないため、ajax応答をモックする必要があります。スパイを使用することで、データのモック、パラメータのチェック、および偽のリターンを実現できます。
var ajaxMock = spyOn($, 'ajax').andCallFake(function (options) {
expect(options.url).toEqual('http://server/populate_table');
expect(options.data.foo).toEqual('bar');
options.success({row: [1, 2, 3]};
});
結果を使用してコールバックを呼び出す前に、サーバーが受信する必要のあるURLとデータに関する期待値を上記で定義していることに注意してください。
最後に、テーブルにデータが入力されているかどうかを確認する必要があります。データやテーブルに関する情報は提供しませんが、jQueryを使用していると推測して、jasmine-jqueryを試してみてください。これを使用すると、DOMに対する期待を簡単に説明でき、拡張ドキュメントをご覧ください。テストしたいものが決まったら、完全なテストは次のようになります。
it('populates the table making a JSON call', function () {
var ajaxMock = spyOn($, 'ajax').andCallFake(function (options) {
expect(options.url).toEqual('http://server/populate_table');
expect(options.data.foo).toEqual('bar');
options.success({row: [1, 2, 3]};
});
$.ajax({
url: 'http://server/populate_table',
data: {foo: 'bar'},
success: populate_table
});
expect($('#mytable')).toExist();
// DOM specific expectations go here...
});
あなたはすでに sinon.js を使用しているので、ajax 呼び出しから受け取ったオブジェクトをテストするために fakeServer を使用するのが最善の方法だと思います。ここで非常によく説明されています(偽のAjaxと偽のサーバーのセクション):
http://tinnedfruit.com/2011/03/03/testing-backbone-apps-with-jasmine-sinon.html
You want to look at the asynchronous test facilities built into jasmine.
Specifically waitFor
and run
.
To explain quickly: you can run an Ajax query and have it return true on success. You wait for that function and then run your test.