2014-12-03 193 views
1

我正在嘗試爲角度應用設置單位/ e2e測試。按照量角器網站上的說明和許多其他樣品,我已經設置並能夠運行測試,除非它們指的是有角度的物體。 這裏是樣本HTML頁面我想爲測試:量角器找不到角度

<!DOCTYPE html> 
<html ng-app="app"> 
<head> 
    <script type="text/javascript" src="libraries/angular.js"></script> 
    <script type="text/javascript" src="libraries/angular-route.js"></script> 
    <script type="text/javascript" src="libraries/angular-touch.js"></script> 
    <script type="text/javascript" src="libraries/angular-sanitize.js"></script> 
    <script type="text/javascript" src="libraries/angular-mocks.js"></script> 

    ..... 
</head> 
<body ng-controller="DefaultController"> 

...

測試:

describe('Logon page', function() 
{ 
    beforeEach(function() 
    { 
     browser.get('default.html'); 

     angular.module("app"); 
    }); 

    it('should have a title', function() 
    { 
     expect(browser.getTitle()).toEqual('Logon'); 
    }); 
}); 

當我運行它我得到一個異常:「ReferenceEror:角度未定義」。 如果我刪除線「angular.module(」app「);」 - 它工作正常。 通過查看量角器的控制檯輸出,在嘗試訪問「角度」對象後,它看起來像是在內部調用Protractor.waitForAngular()。但據我瞭解browser.get - 應加載之前?

我使用角1.3.4和量角器1.4.0。

在此先感謝。

回答

1

爲什麼您需要angular.module("app");零件?您在Protractor測試中編寫的代碼不會在瀏覽器中運行。它使用瀏覽器API(通過Selenium),但您無法直接訪問正在測試的頁面上的角度模塊或其他結構。

我想你可能混淆了單元測試和E2E測試的概念。你只需要angular.module("app");進行單元測試。

+0

我想測試控制器/服務/等。就像在下面的文章中:[測試控制器](http://angular-tips.com/blog/2014/06/introduction-to-unit-test-controllers/)。因此我需要訪問角度對象。 – Amid 2014-12-03 10:52:48

+0

然後,您不需要量角器。單元測試可以使用Karma runner來執行。量角器用於端到端測試(也就是說,當您不縮進來測試單獨的控制器,服務等,而是整個應用程序時,通常是後端,數據庫等) – 2014-12-03 10:54:29

+0

好的。所以如果我理解你正確的量角器是從來沒有打算和不能訪問角庫。它只適用於最終結果。如果我想運行控制器測試等 - 我必須用Karma運行它們 - 我可以使用這些對象嗎? – Amid 2014-12-03 11:48:02