1

我在 app/scripts 下定义了一个相当简约的应用程序(一个控制器,三个指令)。

当 karma 运行时karma start,我导航到 localhost:9100,单元测试运行。但是,当我运行时karma start karma-2e2.conf.js,运行错误:

    [31mChrome 27.0 (Mac) I haz all the things I haz grid FAILED[39m
TypeError: Cannot read property 'name' of undefined
    Chrome 27.0 (Mac): Executed 1 of 1[31m (1 FAILED)[39m


我的测试在 test/e2e/spec/*.js 下

我的 karma-e2e.conf.js 内容如下:

     basePath = '';

    files = [
      ANGULAR_SCENARIO,
      ANGULAR_SCENARIO_ADAPTER,
     'app/components/jquery/jquery.js',
     'app/components/angular/angular.js',
     'test/e2e/**/*.js'
    ];

    proxies = {
      '/' : 'http://localhost:9000'
    }
    exclude = [];

    reporters = ['progress'];

    port = 8080;

    runnerPort = 9100;
    colors = true;

    logLevel = LOG_INFO;

    autoWatch = false;

    browsers = ['Chrome'];

    captureTimeout = 5000;

    singleRun = false;

我的测试是:

 describe('I haz all the things', function(){
   beforeEach(function(){
     browser().navigateTo('/');
   });

  it('I haz grid', function(){
    expect(angular.element('div.grid-item').count).toEqual(1);
  });
  });

为什么会失败,我该如何解决?

4

1 回答 1

3

你在测试中的语法是错误的

它需要是:

expect(repeater('div.grid-item').count()).toEqual(1);

阅读 e2e 领域特定语言...它不是 angular 或 jquery,它有点神秘,但功能强大。

为了更好地调试 e2e 测试,请使用测试运行程序而不是使用 Karma。这是包含在 angular-seed starter 应用程序中的名为 runner.html 的文件:

<!doctype html>
<html lang="en">
  <head>
    <title>End2end Test Runner</title>
    <script src="../lib/angular/angular-scenario.js" ng-autotest></script>
    <script src="scenarios.js"></script>
  </head>
  <body>
  </body>
</html>

只需在浏览器中导航到 runner.html,它就会开始在您面前运行您的测试,只需刷新即可重新运行。您可以在测试中添加 pause() ,测试将在该点停止并提示您继续。您可以使用 firebug 或其他调试器来查看应用程序的状态。

于 2013-06-07T07:31:45.360 回答