我试图将持续集成添加到AngularJS项目中,但某些指令测试失败。这些测试在当地做得很好。下面的错误代码类似于我得到的所有错误。
错误代码
PhantomJS 2.1.1 (Linux 0.0.0) myHead directive compiles a my-head attribute FAILED
....
TypeError: undefined is not a function (evaluating '$compile('<div my-head></div>')') in /home/travis/build/../../test/unit/myHeadDirective.js (line 15)
....
似乎注入$ compile函数不起作用,而注入包含在测试中。
测试代码
describe('myHead directive', function () {
var $compile, $rootScope
beforeEach(module('myApp.templates'))
beforeEach(module('myApp.directives'))
beforeEach(inject(function (_$compile_, _$rootScope_) {
$compile = _$compile_
$rootScope = _$rootScope_
}))
it('compiles a my-head attribute', function () {
var compiledElement = $compile('<div my-head></div>')($rootScope)
$rootScope.$digest() // Fire watchers
expect(compiledElement.html()).toContain('tg_page_head')
})
it('compiles a my-head element', function () {
var compiledElement = $compile('<my-head></my-head>')($rootScope)
$rootScope.$digest() // Fire watchers
expect(compiledElement.html()).toContain('tg_page_head')
})
})
我是使用Travis的新手,因此Travis设置设置可能就是问题所在。 (删除了一些不相关的部分)
#.travis.yml
language: node_js
sudo: false
node_js:
- '6'
cache:
yarn: true
env:
global:
- CXX=g++-4.8 # node 4 likes the G++ v4.8 compiler
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- g++-4.8
code_climate:
repo_token: '......'
before_script:
- npm install -g gulp
- npm install -g
script:
- gulp build
- gulp test
那么,有没有人知道为什么没有定义$ compile函数?
答案 0 :(得分:0)
问题解决了!事实证明,需要在运行测试之前生成templates.js。我通过将生成脚本添加到.travis.yml的before_script来获得$ compile函数。
所以,这是新的before_script:
before_script:
- npm install -g gulp
- npm install -g
- gulp templates
script:
- gulp test
- gulp build