作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在使用 Yeoman 设置项目,并尝试构建一个应用功能切换的 Angular 模块项目。我对单元级别的 Jasmine 测试很着迷,这是我的测试之一:
var scope, Rules;
var elm;
// load the controller's module
beforeEach(function() {
module('featureToggle.directives', function($provide) {
$provide.decorator('Rules', function($delegate) {
$delegate.resolveByName = jasmine.createSpy();
return $delegate;
});
});
inject(function(_Rules_) {
Rules = _Rules_;
});
});
beforeEach(inject(function($rootScope, $compile) {
scope = $rootScope.$new();
elm = angular.element(
'<h1 feature-toggle feature-name="hello">' +
'Hello World' +
'</h1>');
scope = $rootScope;
$compile(elm)(scope);
scope.$digest();
}));
it('should render the content when the feature is enabled', function() {
jasmine.spyOn(Rules, 'resolveByName').andReturn(false);
var contents = elm.find('h1');
expect(contents.eq(0)).toHaveClass('hidden');
});
我遇到了一个奇怪的失败。
TypeError: 'undefined' is not a function (evaluating 'jasmine.spyOn(Rules, 'resolveByName')')
karma.conf 非常普通。
frameworks = ['jasmine'];
// list of files / patterns to load in the browser
files = [
JASMINE,
JASMINE_ADAPTER,
'app/components/angular/angular.js',
'app/components/angular-mocks/angular-mocks.js',
'src/*.js',
'src/**/*.js',
'test/mock/**/*.js',
'test/spec/**/*.js'
];
我大体上使用 PhantomJS,但在 Chrome 中存在相同的问题(相同错误的不同方言)。
使用 $log,实际上没有什么是未定义的。所以我很迷茫。
最佳答案
将 jasmine.spyOn()
更改为 spyOn()
。
顺便说一句,不确定为什么要两次监视相同的方法。
关于angularjs - 类型错误 : 'undefined' is not a function when using spyOn with Karma,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18257092/
我是一名优秀的程序员,十分优秀!