要使Angular NgRx集成测试起作用,您可以尝试以下解决方法:
确保您的测试文件位于正确的位置。在Angular项目中,通常将测试文件放在与源文件对应的目录中。例如,如果您的组件文件位于app/components/example.component.ts
,则测试文件应位于app/components/example.component.spec.ts
。
确保您已正确安装和配置了Jest测试框架。您可以使用Angular CLI来创建一个新的Angular项目,并选择Jest作为测试框架。确保您的angular.json
文件中的test
属性中有以下配置:
"test": {
"builder": "@angular-builders/jest:run",
"options": {
"jestConfig": "src/jest.config.js"
}
}
jest.config.js
文件中,确保您已正确配置NgRx的测试环境。您可以使用@nrwl/angular
包中提供的getJestProjects
函数来获取所有NgRx项目的配置。将以下代码添加到jest.config.js
文件中:const { getJestProjects } = require('@nrwl/angular');
module.exports = {
projects: [...getJestProjects()]
};
import { TestBed } from '@angular/core/testing';
import { provideMockStore } from '@ngrx/store/testing';
然后,在您的测试describe
块中,添加以下配置:
beforeEach(() => {
TestBed.configureTestingModule({
providers: [
provideMockStore()
]
});
});
这样,您就可以在测试中使用NgRx的MockStore
。
TestBed.inject
方法来注入NgRx的MockStore
,并使用它来测试您的NgRx状态和操作。例如:it('should dispatch an action', () => {
const store = TestBed.inject(MockStore);
store.dispatch(new MyAction());
store.select(selectMyState).subscribe(state => {
expect(state).toEqual(expectedState);
});
});
请注意,您需要根据您的具体应用程序和测试需求调整上述代码示例中的代码。
希望这些解决方法能帮助您解决Angular NgRx集成测试不起作用的问题!