2

我正在AngularJS上开发单页应用程序以供学习。我的项目位于另一台计算机上的Apache HTTP Server上,我在开发时使用WinSCP同步,因此它始终是我工作的最后一个版本。

进行到一半(实际上,当我已经完成了应用程序的大部分内容时),我意识到我没有任何测试,我应该学习如何测试我没有手动测试的东西。我决定尝试使用Karma Test Runner为我的AngularJS应用程序编写E2E测试。

我通过安装Karmanpm并对其进行了初始化 ( karma init test/karma.conf.js),但现在会发生什么?
我试过karma start test/karma.conf.js它启动 Chrome(正如我在配置中所说)并说

Karma - 连接
的 Chrome 26.0 (Windows) 空闲

即使在 conf 文件中指定了我的测试文件:

files = [
  'test/first_test.js'
];

这就是里面的内容:

describe('my app', function() {
  browser().navigateTo('/');

  it('should then be.', function() {
    expect(browser().location().url()).toBe('/login');
  });

});

提前致谢!

编辑:我意识到,不仅仅是“Chrome 空闲”,还有控制台日志错误:

未捕获的 ReferenceError:未定义浏览器

有任何想法吗?我现在很困惑。

4

2 回答 2

1

好吧,看来我自己解决了。

我应该添加

  ANGULAR_SCENARIO,
  ANGULAR_SCENARIO_ADAPTER,

到 karma 配置文件的 files 属性。在那之后,我进步了一点,但仍然遇到了很多麻烦,但基本上主要是我得到了resumeBootstrap未定义的错误。我的应用程序使用的是AngularJS 1.0.4,但看起来 Karma 的适配器仅适用于 1.0.6+。将应用程序升级到 1.0.6 有助于resumeBootstrap.

关于在外部服务器上测试应用程序:

proxies = {
 '/': 'http://another.internal/app/'
};

并且不要忘记将应用程序 index.html 中 CSS 和 JS 文件的链接从本地 ( css/style.css) 更改为 web ( //another.internal/app/css/style.css)。

于 2013-04-30T06:49:00.120 回答
1

浏览器仅在 beforeEach 内部定义。尝试这个:

describe('my app', function() {

    beforeEach(function(){
        browser().navigateTo('/');
    });

    it('should then be.', function() {
        expect(browser().location().url()).toBe('/login');
    });

});
于 2013-04-29T18:12:26.820 回答