2013-05-13 61 views
6

當使用因緣的JavaScript測試庫(姓Testacular)使用Rails在一起,應該在哪裏測試文件和嘲笑的數據去放在哪裏?Karma + Rails:文件結構?

讓他們進入/ assets /似乎很奇怪,因爲我們實際上並不想爲用戶提供服務。 (但我猜如果他們根本就沒有預編譯,那麼這不是一個實際的問題,對吧?)

回答

3

我們結束了測試和嘲笑的數據在Rails應用程序的spec文件夾下,並配置Karma導入它們以及我們的測試代碼從app/assets

適用於我們。其他想法是受歡迎的。

我們config/karma.conf.js文件:

basePath = '../'; 

files = [ 
    JASMINE, 
    JASMINE_ADAPTER, 

    //libs 
    'vendor/assets/javascripts/angular/angular.js', 
    'vendor/assets/javascripts/angular/angular-*.js', 
    'vendor/assets/javascripts/jquery-1.9.1.min.js', 
    'vendor/assets/javascripts/underscore-min.js', 
    'vendor/assets/javascripts/angular-strap/angular-strap.min.js', 
    'vendor/assets/javascripts/angular-ui/angular-ui.js', 
    'vendor/assets/javascripts/angular-bootstrap/ui-bootstrap-0.2.0.min.js', 

    //our app! 
    'app/assets/javascripts/<our-mini-app>/**', 

    // and our tests 
    'spec/javascripts/<our-mini-app>/lib/angular/angular-mocks.js', 
    'spec/javascripts/<our-mini-app>/unit/*.coffee', 
    // mocked data 
    'spec/javascripts/<our-mini-app>/mocked-data/<data-file>.js.coffee', 
]; 

autoWatch = true; 

browsers = 'PhantomJS'.split(' ') 

preprocessors = { 
    '**/*.coffee': 'coffee' 
} 
+0

我創建了一個文件夾/規格/角度,我把每一個測試文件,有/規格/角/ E2E,/規格/角/單位,等等...但你是怎麼配置的karma.conf.js?我不確定代理屬性是否正確:'proxies = {'':'http:// localhost:3000 /' };'我即使是一個簡單的測試也有錯誤,它就像是javascript不包括測試來源。 – p1nox 2013-06-04 15:23:14

+0

PD:我正在處理遺留代碼,它使用application.js.erb作爲所有javascript文件的清單,甚至是角度應用程序,在我的karma.conf.js中有文件= ANGLEAR_SCENARIO, ANGULAR_SCENARIO_ADAPTER, '。 ./../app/assets/javascripts/application.js', '*/* Spec.js' ]' – p1nox 2013-06-04 15:54:27

+0

順便說一句,我測試,如果一個名爲 「StSelector」 模塊是存在的,它的工作原理(HTTP: //www.yearofmoo.com/2013/01/full-spectrum-testing-with-angularjs-and-testacular.html#testing-modules),我得到'中途:測試模塊StSelector模塊:應該註冊失敗 \t錯誤:沒有模塊:StSelector' – p1nox 2013-06-04 16:51:54

8

通過這個帖子:https://groups.google.com/forum/#!topic/angular/Mg8YjKWbEJ8

我的東西嘗試,看起來像這樣:

// list of files/patterns to load in the browser 
files: [ 
    'http://localhost:3000/assets/application.js', 
    'spec/javascripts/*_spec.coffee', 
    { 
    pattern: 'app/assets/javascripts/*.{js,coffee}', 
    watched: true, 
    included: false, 
    served: false 
    } 
], 

這手錶的應用程序的js文件,但沒有按不包括它們或提供它們,而是包括由rails和sprocket提供的application.js。

我也一直在擺弄https://github.com/lucaong/sprockets-chain,但還沒有找到一種方法來使用requirejs來包含js文件(例如jquery-rails或angularjs-rails)。

+0

這似乎是一個很好的解決方案。我猜這比alan-h的解決方案慢了一點。 – opsb 2013-11-07 18:31:03

+1

我喜歡這個解決方案。它解決了加載具有.js.erb的文件的問題。 – Adrian 2014-09-29 21:02:33

+0

這是有道理的。 – 2014-10-20 09:09:23