我在 Angular 单元测试方面相对较弱,并且正在努力引导我认为简单的单元测试。
我的类(class)
class CampaignController {
constructor($state) {
this.$state = $state;
}
submit() {
this.$state.transitionTo('some.state');
}
}
export { CampaignController };
我的测试
import { expect } from 'chai';
import angular from 'angular';
import { CampaignController } from './campaign.controller';
let component;
describe('campaign-controller', function() {
var $state;
beforeEach(inject(function (_$state_) {
$state = _$state_;
component = new CampaignController($state);
}));
it('should update state on submit', () => {
component.submit();
expect($state.current.name).to.be('some.state');
});
});
我最终收到此错误
Error: [$injector:unpr] Unknown provider: $stateProvider <- $state
我在这里缺少什么?
最佳答案
您没有在 beforeEach
中加载任何模块,因此 Angular-ui 路由器不可用。至少,您需要加载 ui.router 模块。
例如,您的 block 之前可能有一个单独的 beforeEach block :
beforeEach(module('ui.router'));
beforeEach(inject(function (_$state_) {
$state = _$state_;
component = new CampaignController($state);
}));
关于javascript - 将模拟 $state 注入(inject) Angular 单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36635542/