Javascript 访问主干视图';s函数生成sinon存根
我正在开发主干应用程序,我必须使用sinon.js和Qunit.js对其进行单元测试。 场景是我有一个carView,它扩展了baseview,baseview扩展了主干的视图 我在汽车视图中有一个函数,比如buildFormUrl,它返回一个字符串。根据用户操作更改字符串值 是否可以使用sinon.stub并调用stub函数,然后检查返回值来生成buildFromUrl stub的stub 主干代码段:Javascript 访问主干视图';s函数生成sinon存根,javascript,backbone.js,qunit,sinon,Javascript,Backbone.js,Qunit,Sinon,我正在开发主干应用程序,我必须使用sinon.js和Qunit.js对其进行单元测试。 场景是我有一个carView,它扩展了baseview,baseview扩展了主干的视图 我在汽车视图中有一个函数,比如buildFormUrl,它返回一个字符串。根据用户操作更改字符串值 是否可以使用sinon.stub并调用stub函数,然后检查返回值来生成buildFromUrl stub的stub 主干代码段: var CarSearchView = BaseView.ext
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))”)
您需要传入一个对象而不是原型:
var carSearchInstance = getInstanceSomehow();
var BuildFormURLStub = Sinon.stub(carSearchInstance , 'buildFormUrl');
为什么要对要测试的函数进行存根。这毫无意义。也许你可以解释一下你想在这里测试什么。嗨,Andreas Koberle,我只想检查函数的返回值。这将根据用户输入进行更改。我找了更多。是否可以使用spy.returned(obj)检查值;其中object将是实际返回值,spy将用view函数本身初始化?