2014-12-03 172 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