2013-02-08 54 views
4

我是茉莉花的新手,但想在JavaScript中做更多的TDD。我一直在使用谷歌的Angular庫,我知道Testacular是專門爲測試Angular應用而創建的。基本的test /茉莉/角度的設置和用法

我已經通讀了Jasmine文檔並觀看了Testacular設置視頻,但我無法獲得最基本的測試工作。假設我有三個文件:

modules.js 
controller.js 
appSpec.js 

modules.js有我有幾個.factory(...)服務和一些.directive(...)定製指令模塊定義。 controller.js包含我的控制器,用於將模塊連接到html視圖。

到目前爲止,這麼好。接下來我添加了appSpec.js。假設我想用它來測試我的模塊中名爲「Data」的服務,該服務有一個方法「getData()」,它返回一個資源。

在testactular init中,我已經告訴它看所有三個文件。我運行了Testacular,它告訴我它正在觀察正確的文件。超。

我不明白的是我如何得到茉莉花規範知道如何看待模塊和控制器,以便他們可以測試。如果我簡單地說:

describe('Data Service', function(){ 
    it ('should retrieve two items from the database', function(){ 
    data = Data.getData() //my angular service 
    expect(data.length).toBe(2); 
    }); 
}); 

毫不奇怪,它不知道Data.getData()是什麼。

似乎很明顯,我應該在開始編寫套件之前將模塊定義和控制器帶入規範。這一點非常明顯,我沒有在文檔中看到人們是如何做的。教程似乎開始在spec.js文件中編寫規範,並假設一切都很好。

我在這裏看過其他的帖子,在這裏有類似的問題被問到,但不可否認,他們都有一個我似乎缺乏的基礎。例如,一篇文章談論的不是手動創建控制器的實例,而是注入依賴關係。爲什麼他創建一個新的$ rootScope對象,他的模塊如何被引用等...

我明白我的問題可能只是對Jasmine框架缺乏基本的理解,但我似乎無法從Jasmine自述文件中榨取更多的理解。有人能指出我對這種工作原理的基本解釋嗎?

謝謝。

+0

你可能會考慮在你的文章中添加鏈接。使它更有用。我爲[Testacular](http://testacular.github.com)添加了一個讓你開始。 – jwfearn 2013-03-09 23:39:43

回答

2

在茉莉花試驗中試着做module('myModule')

以下是有很大的測試來看看一些開源的角度項目:

angular-app

angular-ui

bootstrap

+0

+1也將服務注入規範。 – 2013-02-10 05:55:05

+0

只需添加:beforeEach(angular.module('MyModule');不起作用Josh,我將如何將該服務注入規範? – MyTimeFinder 2013-02-11 00:55:20

+0

您應該使用'module('myModule')'(不帶'angular.'前綴),它是一個測試助手,將加載模塊到測試 – 2013-02-11 02:01:53

0

您包括您的定義爲你的測試是通過該方法karma.config。js文件

files = [ JASMINE, JASMINE_ADAPTER, '../app/lib/icg/object.js', '../app/lib/icg/geometry.js', '../app/lib/icg/ubiquity.js', '../test/unit/icgUbiquitySpec.js', '../test/unit/icgObjectSpec.js' ];

在這裏定義哪些文件得到加載到瀏覽器中,不包括單詞「規格」第一個文件是定義和不包括是我的測試文件的人。您需要在測試之前包含您的定義,以便在運行測試之前定義它們,這就是爲什麼我最後包含所有規格文件的原因。