2012-05-25 97 views
4

我有一個模型,它看起來像這樣:如何使用requireJs編寫spec文件?

//myModel.js 
define([], function() { 
    var MyModel = Backbone.Model.extend({ 
     // my code 
    }); 
    return MyModel 
}); 

然後如果我想要寫一個規範這種模式應該怎麼加載使用requireJs模型?

我曾嘗試以下操作:

//myModel.spec.js 
define([ 
    "js/models/myModel", 
], function (MyModel) { 
    describe("My model", function() 
    { 
     beforeEach(function() 
     { 
      this.myModel = new MyModel({ 
       name: "my title" 
      }); 
     }); 
    }); 
}); 

這是正確的方式?

+1

這正是我如何設置與茉莉花和Spy.js。 – srquinn

回答

2

是的,這是正確的。使用RequireJS進行測試的好處在於,您不得不在定義塊中聲明所有測試依賴項。根據定義,單元測試只應該測試一件事。所以如果你在一次測試中有多個依賴關係,那麼這是一種代碼味道,你根本就沒有做過真正的「單元測試」。

理想情況下,唯一的依賴項應該是正在測試的文件。如果該文件具有任何依賴關係,例如服務器端服務或複雜的異步APIS,則可以使用存根和模擬來模擬它們。去SinonJS找一個很棒的存根/嘲弄圖書館。