【发布时间】:2019-08-26 09:23:05
【问题描述】:
我正在模拟一个在我的 Vue 组件中使用的 ES6 类:
export default class DataUploadApi {
// Get uploaded files
static async getUploadedFiles() : Promise<Object> {
return WebapiBase.getAsync({uri: DATA_UPLOAD_ENPOINTS.FILES});
}
}
我一直在关注this 文档,但我认为我的语法与我的模拟略有不同:
import { mount } from '@vue/test-utils';
import DataUploadApi from '../webapi/DataUploadService';
import FileDownloadList from '../components/file-download-list.vue';
const mockGetUploadedFiles = jest.fn().mockResolvedValue({json: JSON.stringify(uploadedFilesObj)});
jest.mock('../webapi/DataUploadService', () => jest.fn().mockImplementation(() => ({getUploadedFiles: mockGetUploadedFiles})));
describe('file-download-list component', () => {
beforeEach(() => {
// @ts-ignore
DataUploadApi.mockClear(); // https://stackoverflow.com/a/52707663/1695437 dont use @ imports on mocks.
mockGetUploadedFiles.mockClear();
});
describe('renders correct markup:', () => {
it('without any uploaded files', () => {
const wrapper = mount(FileDownloadList, {});
expect(wrapper).toMatchSnapshot();
});
});
});
此测试通过。但是,在快照中,我可以看到调用的 API 失败并显示以下错误消息:
<p>
_DataUploadService.default.getUploadedFiles is not a function
</p>
我对函数模拟做错了什么?提前致谢!
【问题讨论】:
标签: javascript unit-testing vue.js jestjs