首页 > 解决方案 > 如何在 Jasmine 中模拟外部枚举设置

问题描述

我正在用 Jasmine 测试 AngularJS 服务。该服务使用来自另一个模块的枚举作为参数调用另一个服务中的函数。

public getSavedColumns = (): ng.IPromise<GridColumn[]> => {
    return this.productSettingsService.readProjectSetting(
        psfc.ApplicationId.Calculator, this.getColumnStorageProperty())
        .then(response => { /**/ });
};

psfc.ApplicationId是另一个模块中的枚举:

export enum ApplicationId {
    Calculator = 2636
}

Jasmine 测试失败并出现以下错误:

TypeError 'undefined' 不是对象(评估 'psfc.ApplicationId.Calculator')

我以为我可以在测试中模拟枚举,但这不会改变结果。

beforeEach(() => {
    angular.mock.module('pw_psfc',
        $provide => {
            $provide.constant('psfc.ApplicationId.Calculator', 0);
        });
});

标签: angularjsenumsjasmine

解决方案


我能够通过在业力配置中包含带有导出枚举的文件来解决我的问题。五个月是一个相当缓慢的学习曲线,但我快到了!=~)


推荐阅读