我正在测试一个角度服务,它从另一个文件导入
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
。
我如何正确地嘲笑这个?
您可以尝试
Object.assign
使用新属性覆盖内部属性吗?
Object.assign(environment, {/* ... */});
如果没有,您可以在属性之间运行循环并手动分配值。
const mockEnv = {/* ... */};
for (const [key, value] of Object.entries(mockEnv)) {
environment[key] = value;
}