angular - 仅在单元测试期间编译某些类
问题描述
我制作了一个可重用的自定义类来帮助在单元测试期间模拟 localStorage(受此博客文章的启发):
export class MockLocalStorage {
static mock(store = {}) {
const mockLocalStorage = {
getItem: (key: string): string => {
return key in store ? store[key] : null;
},
setItem: (key: string, value: string) => {
store[key] = `${value}`;
},
removeItem: (key: string) => {
delete store[key];
},
clear: () => {
store = {};
},
};
spyOn(localStorage, 'getItem').and.callFake(mockLocalStorage.getItem);
spyOn(localStorage, 'setItem').and.callFake(mockLocalStorage.setItem);
spyOn(localStorage, 'removeItem').and.callFake(mockLocalStorage.removeItem);
spyOn(localStorage, 'clear').and.callFake(mockLocalStorage.clear);
}
}
问题是它使用了一些spyOn
仅在单元测试期间定义的调用。这会在构建期间导致一些编译错误。
对于这种特定情况,我可以在不使用 spyOn 的情况下重写它,但是由于我需要为单元测试创建其他可重用的类,所以我真的很想有一种通用的方法来在正常构建期间排除测试实用程序类。
.spec.ts
即使文件不包含任何测试,我也应该使用它来命名文件吗?
解决方案
您应该能够通过简单地将spyOn
函数声明为全局变量来安抚编译器:
declare var spyOn: Function;
推荐阅读
- python - 使用线程 python 终止脚本
- npm - 如何更新全局安装的 npm 包
- c++ - 使用聚合初始化器初始化类的模板(聚合类型)成员,但没有额外的括号
- spring - 多个 Spring Security 过滤器
- c# - 将多边形点保存到mysql数据库c#
- c - 第一次评估后始终具有相同值的 if 语句的优化
- python - counting specific weekday between two dates
- javascript - 如何在 React Native 中更新配置文件(displayName)firebase?
- java - 如何在 RecyclerAdapter 适配器中传递 findViewById
- regex - Swift - 使用正则表达式拆分字符串 - 忽略搜索字符串