我正在开发 Backbone 应用程序,我必须使用 sinon.js 和 Qunit.js 对其进行单元测试。场景是我有一个扩展 baseview 的 carView,而 baseview 扩展了主干的视图。
我在汽车视图中有一个函数说 buildFormUrl,它返回一个字符串。字符串值根据用户操作进行更改。
是否可以使用 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;
}
});
诗乃代码片段:
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:“未定义”不是函数(评估“Sinon.once(BuildFormURLStub.withArgs(baseURL))”)