Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 访问主干视图';s函数生成sinon存根_Javascript_Backbone.js_Qunit_Sinon - Fatal编程技术网

Javascript 访问主干视图';s函数生成sinon存根

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

我正在开发主干应用程序,我必须使用sinon.js和Qunit.js对其进行单元测试。 场景是我有一个carView,它扩展了baseview,baseview扩展了主干的视图

我在汽车视图中有一个函数,比如buildFormUrl,它返回一个字符串。根据用户操作更改字符串值

是否可以使用sinon.stub并调用stub函数,然后检查返回值来生成buildFromUrl stub的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;
             }
           });
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函数本身初始化?