我正在运行vue3,并使用vue测试实用程序库测试一个vue组件,在该组件中,我进行了如下所示的api调用:
const api = this.$http.publisher.fetchValidatedWebsites();
我注册了这个全局http变量
app.config.globalProperties.$http = HttpServiceFactory(HttpClient);
HttpServicefactory返回如下发布者:
const httpServiceFactory = (HttpClient) => ({
publisher: PublisherService(HttpClient),
});
在PublisherService中有fetchValidatedWebsites()方法;但是当我做测试的时候
expect(wrapper.vm.$http.publisher.fetchValidatedWebsites)
.toHaveBeenCalledTimes(1);
我得到这个错误:
TypeError: Cannot read property 'fetchValidatedWebsites' of undefined
似乎由于某种原因,vm无法识别此变量。
在我的包.Json:
"vue": "^3.2.12",
"@vue/test-utils": "^2.0.0-rc.21"
我该怎么解决这个问题?
1条答案
按热度按时间nimxete21#
您需要在vue-test-utils配置中将
$http
注册为全局模拟。请尝试以下内容: