gpt4 book ai didi

javascript - 将模拟 $state 注入(inject) Angular 单元测试

转载 作者:行者123 更新时间:2023-11-29 21:30:22 25 4
gpt4 key购买 nike

我在 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 模块。

例如,您的之前可能有一个单独的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com