AngularJS + Testacular / Jasmine单元测试:0成功执行0

时间:2012-10-03 21:22:58

标签: angularjs jasmine

我正在尝试为AngularJS项目编写单元测试。该项目基于角度种子,并使用Testacular进行测试。每次运行test.sh脚本的尝试总是以“执行0 0成功”结束。

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

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

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

结果是只记录'describe',跳过'it'部分。当我在干净的角种子克隆上尝试同样的事情时一切正常 - 所以我认为测试系统本身与Testacular和Jasmine工作正常。 我们的项目是基于Rails的,但是我正在测试用于比较的干净的角度种子在Apache上运行,所以我认为这可能是差异 - 混乱的路径或Rails项目中的某些东西。

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

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

4 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:2)

在测试中进行e2e测试还有很长的路要走。我挣扎了一段时间。事实证明,expect的左侧必须是角度文档中定义的方法之一: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将不会运行'it'

答案 2 :(得分:1)

请检查Javascript文件的顺序。

在Testacular和reordering the js files fixed the problem中报告了类似的问题。

答案 3 :(得分:1)

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

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

因为如果函数angularInit()找不到带有这些参数之一的元素,则runner将无法启动。

如果您想在没有ng-app的webage上使用角度测试运行器,这一点非常重要 - 使用当前版本它将无法正常工作。