【问题标题】:Protractor cannot find angular量角器找不到角度
【发布时间】:2015-01-31 21:10:49
【问题描述】:

我正在尝试为 Angular 应用程序设置单元/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 - 应该先加载它吗?

我使用 angular 1.3.4 和量角器 1.4.0。

提前致谢。

【问题讨论】:

    标签: javascript angularjs protractor


    【解决方案1】:

    为什么需要angular.module("app"); 部分?您在 Protractor 测试中编写的代码不会在浏览器中运行。它使用浏览器 API(通过 Selenium),但您无法直接访问您正在测试的页面上的角度模块或其他结构。

    我认为您可能混淆了单元测试和 E2E 测试的概念。您需要 angular.module("app"); 来进行单元测试。

    【讨论】:

    • 我想测试控制器/服务/等。就像下面的文章:test controllers。因此我需要访问角度对象。
    • 那么你不需要量角器。可以使用 Karma runner 执行单元测试。 Protractor 用于端到端测试(也就是说,当您不缩进测试单独的控制器、服务等,而是将您的应用程序作为一个整体进行测试时,通常带有后端、数据库等)
    • 好的。因此,如果我理解正确,量角器绝不是有意的,也无法访问角度库。它仅适用于最终结果。如果我想运行控制器测试等 - 我必须使用 Karma 运行它们 - 我可以使用这些对象吗?
    • 是的,这基本上是对的。 Protractor 用于测试用 Angular 构建的网站,但不知道它们的内部结构。
    猜你喜欢
    • 2015-03-28
    • 2015-08-24
    • 1970-01-01
    • 2022-01-18
    • 2015-03-16
    • 2013-10-23
    • 2015-09-13
    • 1970-01-01
    • 2019-03-08
    相关资源
    最近更新 更多