angular - 如何模拟不是注入服务而是导入命名空间的依赖项?
问题描述
我正在尝试测试这项服务。如您所见,mixpanel不是注入服务。它是一个导入的命名空间。
import * as mixpanel from 'mixpanel-browser';
@Injectable({
providedIn: 'root',
})
export class MixpanelService {
constructor() {
mixpanel.init('xxxxxxxx');
}
public register(value: string): void {
mixpanel.register(value);
}
}
describe('MixpanelService', () => { 让服务:MixpanelService;
beforeEach(async() => {
TestBed.configureTestingModule({
providers: [
//mixpanel is not an injected service...
]
});
service = TestBed.inject(MixpanelService);
});
it('should call register method', () => {
//Arrange
let mockMixPanel = ??? //how to mock a namespace????
let spyOnRegister = jest.spyOn(mockMixPanel, 'register');
//Act
service.register({});
//Assert
expect(spyOnRegister).toHaveBeenCalled();
});
}
感谢您的帮助
解决方案
推荐阅读
- html - Github 页面未显示并继续加载
- python - 正则表达式序列强密码
- powershell - 用于 PowerShell 的 Intellisense 在 vscode 中飞溅?
- javascript - 尝试使用多选进行下拉时出错?
- bluetooth-lowenergy - 无法通过 Android 10 上的 Chrome 浏览器写入特征
- ios - Apple App Store Connect - 我可以通过其他国家/地区的银行账户获得付款吗?
- sql-server - 计算列或触发器?MS SQL Server 中的表设计
- git - 我可以在 repo 中创建一个文件夹 repo 吗?
- c++ - 线程错误静态断言失败 C++
- java - DAO 中的 NullPointerException,sessionFactory