Karma e2e测试因类型错误而失败

时间:2013-06-07 05:08:39

标签: angularjs gruntjs yeoman bower karma-runner

我在app / scripts下定义了一个相当简约的app(一个Controller,三个指令)。

当使用karma start运行karma时,我导航到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);
  });
  });

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

1 个答案:

答案 0 :(得分:3)

您的测试语法错误

需要:

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

阅读e2e领域特定的语言......它不是棱角分明的或者是jquery,它有点神秘,但功能强大。

为了更好地调试e2e测试,请使用测试运行器而不是使用Karma。这是angular-seed starter app附带的名为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或其他调试器来查看应用程序的状态。