0

更新使用角種子工程無法運行單元測試

我經歷的業力模塊尋找代碼,說Chrome和嘗試切換到Firefox的失敗,如果有人知道我應該在哪裏看得太我也會很開心。


我希望有人熟悉角種子。我寫了一個小型的js web應用程序,我想爲它編寫一些測試,所以我今天正在學習茉莉花和業力。我發現角種子安裝了這些庫,我花了一天的時間將我的項目移動到角種子。

我無法運行單元測試,我得到以下

Chrome 32.0.1700 (Mac OS X 10.8.4) ERROR 
    Uncaught Error: Bootstrap requires jQuery 

錯誤有趣的是,當我開始在服務器,並在Chrome瀏覽器開發控制檯jQuery的文件實際上是在正確裝入我的網絡與我確信他們來之前bootstrap.min.js

在我的index.html文件我已經在底部

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>  
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script> 
<script src="js/vendor/bootstrap.min.js"></script> 
前恩

這些腳本d的身體

該網站已啓動並正在運行,在Chrome開發者控制檯上沒有錯誤。

角種子想出了一個文件的package.json(我猜想NPM運行install來安裝角種子目錄裏面的模塊)我包括jQuery的

反正得到安裝了jQuery的模塊,那是我的第二次嘗試。

"jquery" : "~2.1.0-rc1" 

我甚至去下載jquery解壓縮的文件,並在我的js/vendor文件夾的index.html中鏈接到它。我已經取消了鏈接。這些文件仍然存在於我的js/vendor文件夾中。

我收到上述錯誤運行此

scripts/test.sh 

後,它可能是一個鉻的問題,我也不太清楚。我會看看是否可以切換到使用Firefox進行測試。任何幫助或想法解決這個問題表示讚賞。

如果它有幫助,這裏是我的controllersSpec。js文件

'use strict'; 

/* jasmine specs for controllers go here */ 

describe('RootPage', function(){ 
    var rootCtrl; 
    beforeEach(module("backpageApp")) 
    beforeEach(inject(function ($controller) { 
    rootCtrl = $controller("RootCtrl"); 
    })) 

    describe("RootCtrl", function() { 
    it("should have listings", function() { 
     expect(rootCtrl.listings).toBe(true) 
    }) 
    }) 
}) 

回答

1

您需要在karma配置文件中列出測試依賴關係。如果你看一下/scripts/test.sh的內容,你可以看到它是所有的..

$BASE_DIR/../node_modules/karma/bin/karma start $BASE_DIR/../config/karma.conf.js $* 

..所以它調用的業力啓動腳本,並傳遞給它karma.conf.js。打開karma.conf.js文件,您可以看到angular seed項目附帶的依賴項。 jQuery不在那裏,因爲它不是Angular所必需的,但是你的應用程序需要它。你應該在那裏添加你的bootstrap.js文件...

files : [ 
    'app/lib/angular/angular.js', 
    'app/lib/angular/angular-*.js', 
    'test/lib/angular/angular-mocks.js', 
    'app/js/**/*.js', 
    'test/unit/**/*.js' 
], 

我會下載jquery文件,所以你可以指向一個本地副本。例如...

files : [ 
    'app/lib/jquery/jquery.js', 
    'js/vendor/bootstrap.min.js', 
    'app/lib/angular/angular.js', 
    'app/lib/angular/angular-*.js', 
    'test/lib/angular/angular-mocks.js', 
    'app/js/**/*.js', 
    'test/unit/**/*.js' 
], 
0

我不知道,如果你遵循所有的步驟還沒有,但在任何情況下,這些都是運行角噶茉莉花步驟:

  1. 您需要安裝nodejs,因緣運行在節點之上

  2. 您需要從Node Packaged Modules從命令窗口安裝因緣執行:

    npm install -g karma

  3. 如果您打算與Chrome和Firefox上運行這一點,你在Windows上運行這一點,你需要添加2 environment variables

 
    CHROME_BIN = [Crome installation path/chrome.exe] 
    FIREFOX_BIN =[Firefox installation path/firefox.exe] 

      4.返回到項目文件夾用命令窗口一旦你可以執行:

karma init

只需點擊輸入,直到它完成;底線這將創建一個文件名爲:

karma.config.js

在我的項目文件看起來是這樣的,你可能會包括在不同的設置一些有用的意見:包括你確保:

 
    module.exports = function(config) { 
     config.set({  
     basePath: '',  
     frameworks: ['jasmine'],  
     files: [ 
      '../app/*.js', 
      '../app/lib/angular.js', 
      '../app/lib/angular-route.min.js', 
      '../app/lib/angular-mocks.js',   
      '../app/app.js', 
      'controllers/*.js', 
      'services/*.js', 
     ],  
     exclude: [ 
     ],  
     reporters: ['progress'],  
     port: 9876,  
     colors: true,  
     logLevel: config.LOG_INFO,  
     autoWatch: true,  
     browsers: ['Chrome','Firefox'], 
     captureTimeout: 60000, 
     singleRun: false 
     }); 
    }; 

重要角度嘲笑在你的配置中,inject功能在該模塊上。

      5.返回到你的命令行窗口,瀏覽您的karma.config.js文件,並和執行:

karma start

警告:2014年1月21日之前下載噶版本使用茉莉1.3.1如果你提供在你的項目中更新版本的茉莉花(也許2.0.0)可能你會發現some differences之間的版本和由果報茉莉花使用。

在這一點上,你會很好去。

關於從SpecRunner文件運行茉莉花可能會有一些差異,但我想這可能是另一個問題的主題。