バックボーン アプリケーションに取り組んでおり、sinon.js と Qunit.js を使用して単体テストを行う必要があります。シナリオは、baseview を拡張する carView が 1 つあり、baseview がバックボーンのビューを拡張することです。
文字列を返す車のビューにbuildFormUrlという関数が1つあります。文字列値は、ユーザー アクションに基づいて変更されます。
sinon.stub を使用して buildFromUrl スタブのスタブを作成し、スタブ関数を呼び出して戻り値を確認することは可能ですか?
バックボーン コード スニペット:
var CarSearchView = BaseView.extend({
intitalize : function(){
//some code
},
buildFormUrl: function(baseUrl){
// process a different form url based on new/used selection
var newUsedToggleValue = this.$('#cars-form-new-used-select').val(),
url = baseUrl;
if (newUsedToggleValue === 'used') {
url += 'for-sale/searchresults.action';
} else {
url += 'go/search/newBuyIndex.jsp';
}
return url;
}
});
Sinon コード スニペット:
QUnit.test('_buildURLForm function', function(){
QUnit.expect(1);
var BuildFormURLStub = Sinon.stub(CarSearch.prototype, 'buildFormUrl');// building the sinon stub
var toggleButton = $(SampleHtml).find('cars-new-used-toggle');
$(toggleButton).first().click(); //clicking the button
var baseURL = "http:\\www.cars.com";
var output = Sinon.once(BuildFormURLStub.withArgs(baseURL)); // passing the argument and and calling the function using sinon once![enter image description here][1]
var Expected = baseURL + 'for-sale/searchresults.action';
QUnit.deepEqual(output,Expected,"For new Toggle button clicked");
});
「関数は未定義です」というエラーが表示されます
'undefined' は関数ではありません ('Sinon.once(BuildFormURLStub.withArgs(baseURL))' を評価します)
TypeError: 'undefined' は関数ではありません ('Sinon.once(BuildFormURLStub.withArgs(baseURL))' を評価しています)