当前位置:   article > 正文

Bun 单元测试实践

Bun 单元测试实践

当前要测试 index.js 文件中 requestProductList 方法,requestProductList 方法中引入了 utils.js 文件中的 getProductList 方法,getProductList 方法返回异步网络请求的数据。

index.js

  1. import { getProductList } from './utils';
  2. /**
  3. * 获取产品列表
  4. * @returns {Promise} 产品列表
  5. */
  6. export const requestProductList = () => {
  7. return getProductList().then(productList => {
  8. return productList.map((item) => {
  9. return ({
  10. label: item.nameZh,
  11. value: item.nameEn,
  12. key: item.nameEn,
  13. });
  14. });
  15. })
  16. }

utils.js

  1. export const getProductList = () => {
  2. return Promise.resolve([]);
  3. }
  4. export default { getProductList };

单元测试文件 index.test.js

  1. // 导入所需的模块和函数
  2. import * as utils from './utils';
  3. import { requestProductList } from './index';
  4. import { describe, expect, mock, spyOn, test } from 'bun:test';
  5. // 模拟异步网络请求结果 - 产品列表
  6. const mockProductList = [
  7. { nameZh: 'Product 1', nameEn: 'Product 1' },
  8. { nameZh: 'Product 2', nameEn: 'Product 2' },
  9. { nameZh: 'Product 3', nameEn: 'Product 3' },
  10. ];
  11. // 描述 requestProductList 函数的测试套件
  12. describe('requestProductList', () => {
  13. // 测试 requestProductList 函数是否返回一个产品对象数组
  14. test('should return an array of product objects', async () => {
  15. // 模拟 utils 模块中的 getProductList 函数
  16. mock.module("./utils", () => ({
  17. getProductList: () => Promise.resolve(mockProductList),
  18. }));
  19. // 使用 spyOn 函数创建一个 spy 对象
  20. const spy = spyOn(utils, "getProductList");
  21. // 调用 requestProductList 函数并获取返回结果
  22. const result = await requestProductList();
  23. // 预期结果
  24. const expectedOutput = [
  25. { label: 'Product 1', value: 'Product 1', key: 'Product 1' },
  26. { label: 'Product 2', value: 'Product 2', key: 'Product 2' },
  27. { label: 'Product 3', value: 'Product 3', key: 'Product 3' },
  28. ];
  29. // 断言 - getProductList 是否被调用
  30. expect(spy).toHaveBeenCalled();
  31. // 断言 - 返回结果是否符合预期
  32. expect(result).toEqual(expectedOutput);
  33. });
  34. // 测试 requestProductList 函数是否返回一个空的产品对象数组
  35. test('should return an empty array of product objects', async () => {
  36. // 模拟 utils 模块中的 getProductList 函数
  37. mock.module("./utils", () => ({
  38. default: {
  39. getProductList: () => Promise.resolve([]),
  40. },
  41. getProductList: () => Promise.resolve([]),
  42. }));
  43. // 使用 spyOn 函数创建一个 spy 对象
  44. const spy = spyOn(utils, "getProductList");
  45. // 调用 requestProductList 函数并获取返回结果
  46. const result = await requestProductList();
  47. // 断言 - getProductList 是否被调用
  48. expect(spy).toHaveBeenCalled();
  49. // 断言 - 返回结果是否符合预期
  50. expect(result).toEqual([]);
  51. });
  52. });
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/181591
推荐阅读
相关标签
  

闽ICP备14008679号