5

我正在尝试为 AngularJS 项目编写单元测试。该项目基于 angular-seed 并使用 Testacular 运行测试。每次运行 test.sh 脚本的尝试总是以“Executed 0 of 0 SUCCESS”结束。

我尝试了这个超级简单的“测试”:

describe('Testing Jasmine', function() {
  console.log('describe');
  var test = 'test';

  it('should be test', function() {
    console.log('it');
    expect(test).toEqual('test');
  });
});

结果是只记录了“描述”,跳过了“它”部分。当我在干净的角种子克隆上尝试同样的事情时,一切正常 - 所以我假设带有 Testacular 和 Jasmine 的测试系统本身工作正常。我们的项目是基于 Rails 的,但是我正在测试比较的干净的 angular-seed 是在 Apache 上运行的,所以我认为这可能是差异 - 混乱的路径或那个 Rails 项目中的东西。

但是没有错误消息,e2e 测试工作......而且我假设如果某些文件丢失或路径不正确,它将无法在测试中记录“描述” - 如果我理解正确,这意味着 Jasmine 是处理正确的文件(此伪测试中没有其他依赖项)。“描述”部分怎么可能工作得很好,而只有“它”部分似乎被跳过了?

任何提示或帮助将不胜感激。

4

4 回答 4

6

如果您正在进行单元测试,请不要在 testacular 配置文件中包含 angular-scenario.js 文件。这将破坏单元测试。

于 2013-02-20T19:35:24.243 回答
2

testacular 中的 e2e 测试还有很长的路要走。我为此挣扎了一段时间。事实证明,期望的左侧必须是角度文档中定义的方法之一:http: //docs.angularjs.org/guide/dev_guide.e2e-testing

下面是一个例子

describe('Testing Jasmine', function() {

  it('should be test', function() {
    expect(element('foo').count()).toEqual(1);
  });

});

请记住,如果您没有将规定的方法调用之一输入到期望中,testacular 将不会运行“它”

于 2012-10-19T06:05:15.780 回答
1

还要确保您在要测试的页面上使用了以下属性之一:

'ng:app', 'ng-app', 'x-ng-app', 'data-ng-app'

因为如果函数angularInit()找不到具有这些参数之一的元素,则运行程序将不会启动。

如果您想在没有 ng-app 的网页上使用 Angular 测试运行器,这一点尤其重要 - 在当前版本中它只是无法工作。

于 2012-11-22T12:54:53.233 回答
1

请检查 Javascript 文件的顺序。

Testacular 报告了一个类似的问题,重新排序 js 文件解决了这个问题

于 2012-10-19T04:38:59.427 回答