我正在编写一些单元测试,但遇到具有inject
属性的组件时遇到了麻烦。
我正在使用shallowMount
。我对此进行了一些研究,并且有一种方法可以为provide
https://vue-test-utils.vuejs.org/api/options.html#provide创建假数据。但是,我没有看到有关inject
的任何信息或提示。
因此,我需要一些有关如何在Vuejs中使用inject
进行单元测试的建议?
最佳答案
您在Provide属性中设置的内容是用于注入(inject)已安装组件的内容。
在单元测试中,我有
metadataModule = sandbox.createStubInstance(MetadataModule);
metadataService = sandbox.createStubInstance(MetadataService);
wrapper = shallowMount(MoveFileElement, {
provide: {
[SYMBOLS.METADATAMODULE]: metadataModule,
[SYMBOLS.METADATASERVICE]: metadataService,
},
....
然后在我的组件中
export default class MoveFileElement extends Mixins(Utilities) {
@Inject(SYMBOLS.METADATAMODULE) public metadataModule!: IMetadataModule;
@Inject(SYMBOLS.METADATASERVICE) public metadataService!: MetadataService;
现在,该组件可以访问我在单元测试中准备的虚假版本的元数据模块。