在 Karma 单元测试中模拟导入选择器的值
Posted
技术标签:
【中文标题】在 Karma 单元测试中模拟导入选择器的值【英文标题】:Mocking the value of an imported selector in Karma unit tests 【发布时间】:2021-04-24 08:23:34 【问题描述】:目前正在尝试使用 Karma 在我的单元测试中模拟选择器值。我试图模拟的代码如下:
Constructor(private store: Store<IAppState>
this.isFound$ = this.store.pipe(select(selectIsFound),filter(isFound => isFound != undefined))
我需要一些可以让我模拟出 selectIsFound 值而不是模拟出 isFound 可观察对象的东西,以便可以测试过滤器并提高代码覆盖率。如果没有过滤器运算符的其他解决方案也会有所帮助。
我目前正在直接使用以下方法模拟可观察值:
component.isFound = of(true)
但我需要一些能触发过滤器的东西,这样它才能得到覆盖。 任何帮助将不胜感激。
【问题讨论】:
请提供一个最小的、完整的代码。有些变量我们不知道它们来自哪里 【参考方案1】:很遗憾,component.isFound = of(true)
还不够。
您需要遵循ngrx
测试指南并提供模拟选择器:https://ngrx.io/guide/store/testing#using-mock-selectors
beforeEach(() =>
TestBed.configureTestingModule(
// ...
providers: [
// ...
provideMockStore( initialState ),
],
);
// setting the selected value.
TestBed.get(Store).overrideSelector(selectIsFound, true);
);
【讨论】:
以上是关于在 Karma 单元测试中模拟导入选择器的值的主要内容,如果未能解决你的问题,请参考以下文章
Angularjs 基于karma和jasmine的单元测试
前端js单元测试 使用mochachaisinon,karma
在vue-cli生成的项目中使用karma+chrome进行单元测试