Я работаю над приложением Backbone, и мне нужно протестировать его с помощью sinon.js и Qunit.js. Сценарий таков: у меня есть один carView, который расширяет baseview, а baseview расширяет представление магистрали.
У меня есть одна функция, скажем, buildFormUrl в представлении автомобиля, которая возвращает строку. Строковое значение изменяется в зависимости от действий пользователя.
Можно ли сделать заглушку buildFromUrl с помощью sinon.stub и вызвать функцию заглушки, а затем проверить возвращаемые значения?
Фрагмент кода магистрали:
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;
}
});
Фрагмент кода Синон:
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))')