gpt4 book ai didi

angularjs - 使用 webpack 进行 Angular 1.5 组件单元测试

转载 作者:行者123 更新时间:2023-12-02 20:14:01 25 4
gpt4 key购买 nike

我正在尝试使用 Controller 测试组件,并进行一些绑定(bind):

class AppSpecificController {
constructor() {
this.text = this.initialText ? this.initialText : 'No initial text has been specified.';
}
}

export const AppSpecificComponent = {
bindings: {
'initialText': '<bindInitialText'
},
templateUrl: '/app/components/app-specific/app-specific.html',
controller: AppSpecificController,
controllerAs: 'appSpecific'
};

export default AppSpecificComponent;

在我的单元测试文件中,我不想加载完整的应用程序,只想加载我需要的东西。所以我想模拟一个模块,或者只是用模拟创建一个名为某些东西的新模块,将组件添加到该模块,然后加载该模块:

import {AppSpecificComponent} from './app-specific.component';

describe('AppSpecificComponent', () => {
let controller;
let scope;
let $componentController;

beforeEach(() => {
angular.module('mock-module', [])
.component('appSpecific', AppSpecificComponent);

// this fails
module('mock-module');

inject((_$componentController_, $rootScope) => {
scope = $rootScope.$new();
$componentController = _$componentController_;
});

controller = $componentController('appSpecific', {$scope: scope}, {initialText: 'Some text'});
});

it('should test something', () => {
expect(true).toBeTruthy();
});
});

创建模块模拟模块很好,但是加载它失败,并且显然在加载不多的模块中注入(inject)内容失败,以及创建一个我可以开始测试的 Controller 。如果能够独立于运行组件的应用程序单独测试组件,那就太好了。

仅对 AppSpecificController 类使用 new 运算符是行不通的,因为您从组件收到的绑定(bind)不存在:

// fails, no bindings available in controller
controller = new AppSpecificController();

最佳答案

我在 StackOverflow 上的其他地方找到了答案,但现在不知道在哪里了。然而我一直在寻找答案:

angular.mock.module($provide => {
$provide.controller('SomeController', () => { ... });
$provide.constant('someConstant', 'some constant');
});

关于angularjs - 使用 webpack 进行 Angular 1.5 组件单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37678047/

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