【发布时间】:2019-03-05 23:18:31
【问题描述】:
我在处理documentation of 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() });
第一个用模拟函数替换整个服务(我想实现文档中提到的自动模拟功能,其中原始的所有方法都自动替换为模拟 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 你能解释一下吗?
标签: javascript unit-testing jasmine jestjs