我处理Jest的文档时遇到了一些问题,因为我期望这段代码可以工作:
import Vue from 'vue';
import Router from '@/router/index';
import OrdersService from '@/services/orders.service';
jest.mock('@/services/orders.service');
describe('OrdersItem.vue', () => {
beforeEach(() => {
// mockClear does not exist
OrdersService.mockClear();
});
it('should render expected list contents', () => {
// Orders.mock is undefined
OrdersService.getAll.mockResolvedValue([ ... ]);
// ...
但事实并非如此。它失败的情况就好像OrdersService
从未被模拟一样。我也尝试了类似以下的操作:
jest.mock('@/services/orders.service', () => jest.fn());
jest.mock('@/services/orders.service', () => { getAll: jest.fn() });
第一种方法是用一个模拟函数替换整个服务(我想实现在文档中提到过的自动模拟功能,其中原始服务的所有方法都会自动替换为模拟函数)。
第二种方法与只使用模块路径的.mock
调用方式失败了。
我在这里做错了什么,为什么会这样?
orders.service
骨架:
import axios from 'axios';
import config from '../config/config.json';
import Order from '../models/order';
class OrdersService {
constructor(httpClient) {
this.httpClient = httpClient;
}
getAll() {
// ...
}
}
export default new OrdersService(axios);
order.service
的框架吗? - Icepickle