我正在尝试为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正在处理正确的文件(在这个伪测试中没有其他依赖项)。 “描述”部分如何正常工作并且只有“它”部分似乎被跳过了?
任何提示或帮助都将不胜感激。
答案 0 :(得分:6)
如果您正在进行单元测试,请不要在您的testacular配置文件中包含angular-scenario.js文件。这将破坏单元测试。
答案 1 :(得分:2)
以下是一个例子
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上使用角度测试运行器,这一点非常重要 - 使用当前版本它将无法正常工作。