2015-10-19 138 views
0

我有具有以下視圖模型淘汰賽組件出現故障:淘汰賽,requirejs和Jasmine測試

define(["jquery", "knockout"], function ($, ko) { 
    return function() { 

     function companySet(value) { 
      var self = this; 

      self.id = ko.observable(value.id); 
      self.name = ko.observable(value.name); 
      self.numberOfCompanies = ko.observable(value.numberOfCompanies); 
      self.numberOfEmployees = ko.observable(value.numberOfEmployees); 
     } 

     function companySetList() { 
      var self = this; 

      self.companySets = ko.observableArray([]); 

      self.getCompanySets = function() { 
       self.companySets.removeAll(); 

       $.getJSON("/companysets", function(data) { 
         $.each(data, function(key, value) { 
          self.companySets.push(new companySet(value)); 
         }); 
        }); 
      }; 
     } 

     this.viewModel = new companySetList(); 
     this.viewModel.getCompanySets(); 
    }; 
}); 

我的規格文件看起來像這樣;

define(["jquery"], function ($) { 

    describe("Company Set List Tests", function() { 

     beforeEach(function(){ 
      jasmine.Ajax.install(); 
     }) 

     afterEach(function(){ 
      jasmine.Ajax.uninstall(); 
     }) 

     describe("when loaded", function() { 

      it("it should load the company sets", function() { 
       require(["app/files/company-set-list"]); 
       var request = jasmine.Ajax.requests.mostRecent(); 
       expect(request.method).toBe("GET"); 
       expect(request.url).toBe("/companysets"); 
      }); 

     }); 

     describe("Testing ajax stuff", function(){ 

      it("just test the friggen call", function(){ 
       $.getJSON("/test", function(){}); 
       expect(jasmine.Ajax.requests.mostRecent().url).toBe("/test"); 
      }); 

     }); 
    }); 
}); 

公司集列表被加載,但它不調用getCompanySets方法。因此,我無法讓測試工作。當作爲挖空組件的一部分加載時,公司集列表視圖模型按預期工作。

我錯過了什麼?

+1

您的測試似乎不構建您的視圖模型的實例嗎?我假設'require'調用應該有一個正在實例化的返回值? –

+0

我已經嘗試了很多方法來要求在該模塊中拉...更好的問題是如何測試Jasmine視圖模型中的$ .getJSON調用? – cloggins

回答

0

感謝詹姆斯·索普。這是簡單的事情。我沒有創建視圖模型的實例,所以$ .getJSON調用從未被解僱。下面是更新規範文件...

` 定義([ 「jQuery的」, 「應用程序/文件/公司集列表」],函數($,SUT){

describe("Company Set List Tests", function() { 

    beforeEach(function(){ 
     jasmine.Ajax.install(); 
     this.instance = new sut(); 
    }) 

    afterEach(function(){ 
     jasmine.Ajax.uninstall(); 
    }) 

    describe("when loaded", function() { 

     it("it should load the company sets", function() { 
      var request = jasmine.Ajax.requests.mostRecent(); 
      expect(request.method).toBe("GET"); 
      expect(request.url).toBe("/companysets"); 
     }); 

    }); 

    describe("Testing ajax stuff", function(){ 

     it("just test the friggen call", function(){ 
      $.getJSON("/true", function(){}); 
      expect(jasmine.Ajax.requests.mostRecent().url).toBe("/true"); 
     }); 

    }); 
}); 

}) ; `

+0

不知道古怪的格式化是怎麼回事:: – cloggins