Angular 测试如何模拟导入的常量

问题描述 投票:0回答:1

我正在测试一个角度服务,它从另一个文件导入

const

import { environment } from "../environments/environment";

环境.ts就像

export const environment = {
    ...window.mainConfig,
    production: false
};

window.mainConfig
是一个电子上下文桥暴露变量。它在
ng test
上下文中未定义,所以我必须模拟它。

我尝试了以下方法

import * as environment from '../environments/environment';

describe("...",()=>{
  beforeEach(() => {
    //...
    spyOnProperty(environment,"environment","get").and.returnValue({/* ... */});
    //...
  });
});

但这给出了

Error: <spyOnProperty> : environment is not declared configurable
。 我如何正确地嘲笑这个?

angular unit-testing mocking karma-jasmine
1个回答
0
投票

您可以尝试

Object.assign
使用新属性覆盖内部属性吗?

Object.assign(environment, {/* ... */});

如果没有,您可以在属性之间运行循环并手动分配值。

const mockEnv = {/* ... */};

for (const [key, value] of Object.entries(mockEnv)) {
  environment[key] = value;
}
© www.soinside.com 2019 - 2024. All rights reserved.