赞
踩
当前要测试 index.js 文件中 requestProductList 方法,requestProductList 方法中引入了 utils.js 文件中的 getProductList 方法,getProductList 方法返回异步网络请求的数据。
index.js
- import { getProductList } from './utils';
-
- /**
- * 获取产品列表
- * @returns {Promise} 产品列表
- */
- export const requestProductList = () => {
- return getProductList().then(productList => {
- return productList.map((item) => {
- return ({
- label: item.nameZh,
- value: item.nameEn,
- key: item.nameEn,
- });
- });
- })
- }

utils.js
- export const getProductList = () => {
- return Promise.resolve([]);
- }
-
- export default { getProductList };
单元测试文件 index.test.js
- // 导入所需的模块和函数
- import * as utils from './utils';
- import { requestProductList } from './index';
- import { describe, expect, mock, spyOn, test } from 'bun:test';
-
- // 模拟异步网络请求结果 - 产品列表
- const mockProductList = [
- { nameZh: 'Product 1', nameEn: 'Product 1' },
- { nameZh: 'Product 2', nameEn: 'Product 2' },
- { nameZh: 'Product 3', nameEn: 'Product 3' },
- ];
-
- // 描述 requestProductList 函数的测试套件
- describe('requestProductList', () => {
-
- // 测试 requestProductList 函数是否返回一个产品对象数组
- test('should return an array of product objects', async () => {
-
- // 模拟 utils 模块中的 getProductList 函数
- mock.module("./utils", () => ({
- getProductList: () => Promise.resolve(mockProductList),
- }));
-
- // 使用 spyOn 函数创建一个 spy 对象
- const spy = spyOn(utils, "getProductList");
-
- // 调用 requestProductList 函数并获取返回结果
- const result = await requestProductList();
-
- // 预期结果
- const expectedOutput = [
- { label: 'Product 1', value: 'Product 1', key: 'Product 1' },
- { label: 'Product 2', value: 'Product 2', key: 'Product 2' },
- { label: 'Product 3', value: 'Product 3', key: 'Product 3' },
- ];
-
- // 断言 - getProductList 是否被调用
- expect(spy).toHaveBeenCalled();
- // 断言 - 返回结果是否符合预期
- expect(result).toEqual(expectedOutput);
- });
-
- // 测试 requestProductList 函数是否返回一个空的产品对象数组
- test('should return an empty array of product objects', async () => {
-
- // 模拟 utils 模块中的 getProductList 函数
- mock.module("./utils", () => ({
- default: {
- getProductList: () => Promise.resolve([]),
- },
- getProductList: () => Promise.resolve([]),
- }));
-
- // 使用 spyOn 函数创建一个 spy 对象
- const spy = spyOn(utils, "getProductList");
-
- // 调用 requestProductList 函数并获取返回结果
- const result = await requestProductList();
-
- // 断言 - getProductList 是否被调用
- expect(spy).toHaveBeenCalled();
- // 断言 - 返回结果是否符合预期
- expect(result).toEqual([]);
- });
- });

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。