是否可以在没有jest.mock('module')的情况下在NodeJS中使用Jest模拟API调用?

加布里埃尔·科斯塔(Gabriel Costa)

我的NodeJS应用程序必须执行一些API请求,因此我正在模拟它们的返回,因为我的测试仅适用于我的应用程序的业务逻辑。但是,有两件事我完全不了解。

我正在使用jest的mockImplementation方法来更改我的服务的返回值,但如果不事先使用该服务调用jest.mock,就无法使其工作。

另外,如果我尝试在jest.config.js中将automock:true设置为,则会返回错误:|

TypeError: Cannot set property 'gracefulify' of undefined

这是我的test.js代码,我在其中测试一个调用Automation.js的函数,该函数具有我的应用程序逻辑并为我的服务进行调用:

const automation = require('../automations/fake.automation');

// MOCKS
const mockedBlingProduct = require('../mocks/bling-product.mocks.json');
const mockedShopifyCreatedProduct = require('../mocks/shopify-created-product.mocks.json');

// SERVICES
const BlingProductService = require('../services/bling-product.service');
const ShopifyProductService = require('../services/shopify-product.service');

jest.mock('../services/bling-product.service');
jest.mock('../services/shopify-product.service');

describe('Automation test', () => {
  beforeEach(() => {
    const blingMockedReturn = jest.fn(() => {
      return mockedBlingProduct;
    });

    const shopifyMockedReturn = jest.fn(() => {
      return mockedShopifyCreatedProduct;
    });

    BlingProductService.mockImplementation(() => {
      return {
        list: blingMockedReturn
      };
    });

    ShopifyProductService.mockImplementation(() => {
      return {
        create: shopifyMockedReturn
      };
    });
  });

  it('should return status SUCCESS', async () => {
    const result = await 
.run();
    expect(result).toEqual({ status: 'SUCCESS' });
  });
}); 

这是我其中一项服务的代码,请记住,API调用背后的逻辑是从服务中抽象出来的。在模拟实现中,我试图覆盖列表并在其中创建函数:

class BlingPriceService {
  async list(query = {}) {
    const httpMethod = 'GET';
    const resource = 'produtos/page={pageNumber}/json';

    const options = {
      queryString: query,
      urlParams: {
        pageNumber: 1,
      }
    };

    return blingComponent.request(httpMethod, resource, options);
  }
}

module.exports = BlingPriceService;
基督教
const automation = require('../automations/fake.automation');

// MOCKS
const mockedBlingProduct = require('../mocks/bling-product.mocks.json');
const mockedShopifyCreatedProduct = require('../mocks/shopify-created-product.mocks.json');

// SERVICES
const BlingProductService = require('../services/bling-product.service');
const ShopifyProductService = require('../services/shopify-product.service');

describe('Automation test', () => {
  beforeAll(() => {
    jest.spyOn(BlingProductService.prototype, 'list').mockImplementation(() => Promise.resolve(mockedBlingProduct));

    jest.spyOn(ShopifyProductService.prototype, 'list').mockImplementation(() => Promise.resolve(mockedShopifyCreatedProduct));
  });

  afterAll(() => {
     jest.restoreAllMocks();
  });

  it('should return status SUCCESS', async () => {
    const result = await automation.run();
    expect(result).toEqual({ status: 'SUCCESS' });
  });
}); 

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Mock module.__dict__ 使用 Python Mock

来自分类Dev

在有和没有pytest-mock的情况下模拟标准库函数

来自分类Dev

在有和没有pytest-mock的情况下模拟标准库函数

来自分类Dev

Python Mock没有断言调用

来自分类Dev

Python Mock没有断言调用

来自分类Dev

如何在Jest中使用axios模拟API调用?

来自分类Dev

是否可以在非托管代码中使用Mock / Fake框架?

来自分类Dev

是否可以在没有额外硬件的情况下在Arduino上使用CAN?

来自分类Dev

在没有app.module.ts文件的情况下在多个模块之间共享组件

来自分类Dev

在没有root的情况下在android中使用代理

来自分类Dev

来自构建器的JEST Mock实现

来自分类Dev

我可以在没有预览的情况下在服务中使用Android相机吗?

来自分类Dev

在没有分配的情况下在python中使用行程运算符可以吗?

来自分类Dev

我可以在python中使用`mock`来模拟具有指定参数的方法吗?

来自分类Dev

使用Jest模拟具有不同实现的泵node_module-Typescript

来自分类Dev

使用jest.mock('axios')时如何模拟拦截器?

来自分类Dev

TCPClient是否可以在没有网卡的情况下使用?

来自分类Dev

是否可以在没有相机的情况下使用Vuforia?

来自分类Dev

是否可以在没有 sudo 的情况下使用 docker?

来自分类Dev

是否可以在没有 Groovy 的情况下使用 Jenkins

来自分类Dev

是否可以在没有订阅密钥的情况下调用Azure API Rest URL?

来自分类Dev

是否可以在没有网关API的情况下直接调用AWS Lambda?

来自分类Dev

是否可以在没有订阅密钥的情况下调用Azure API Rest URL?

来自分类Dev

是否可以在没有用户模型或任何身份验证的情况下在Ruby on Rails中使用会话/ cookie?

来自分类Dev

使用jest.mock时如何猴子修补单个方法

来自分类Dev

开玩笑,对不同的测试使用不同的jest.mock

来自分类Dev

如何使用 Jest Mock 模块测试 Redux Thunk 异步操作

来自分类Dev

jest.mock() 使用 webpack 别名的正确配置是什么?

来自分类Dev

jest.spyOn 相当于 jest.mock

Related 相关文章

  1. 1

    Mock module.__dict__ 使用 Python Mock

  2. 2

    在有和没有pytest-mock的情况下模拟标准库函数

  3. 3

    在有和没有pytest-mock的情况下模拟标准库函数

  4. 4

    Python Mock没有断言调用

  5. 5

    Python Mock没有断言调用

  6. 6

    如何在Jest中使用axios模拟API调用?

  7. 7

    是否可以在非托管代码中使用Mock / Fake框架?

  8. 8

    是否可以在没有额外硬件的情况下在Arduino上使用CAN?

  9. 9

    在没有app.module.ts文件的情况下在多个模块之间共享组件

  10. 10

    在没有root的情况下在android中使用代理

  11. 11

    来自构建器的JEST Mock实现

  12. 12

    我可以在没有预览的情况下在服务中使用Android相机吗?

  13. 13

    在没有分配的情况下在python中使用行程运算符可以吗?

  14. 14

    我可以在python中使用`mock`来模拟具有指定参数的方法吗?

  15. 15

    使用Jest模拟具有不同实现的泵node_module-Typescript

  16. 16

    使用jest.mock('axios')时如何模拟拦截器?

  17. 17

    TCPClient是否可以在没有网卡的情况下使用?

  18. 18

    是否可以在没有相机的情况下使用Vuforia?

  19. 19

    是否可以在没有 sudo 的情况下使用 docker?

  20. 20

    是否可以在没有 Groovy 的情况下使用 Jenkins

  21. 21

    是否可以在没有订阅密钥的情况下调用Azure API Rest URL?

  22. 22

    是否可以在没有网关API的情况下直接调用AWS Lambda?

  23. 23

    是否可以在没有订阅密钥的情况下调用Azure API Rest URL?

  24. 24

    是否可以在没有用户模型或任何身份验证的情况下在Ruby on Rails中使用会话/ cookie?

  25. 25

    使用jest.mock时如何猴子修补单个方法

  26. 26

    开玩笑,对不同的测试使用不同的jest.mock

  27. 27

    如何使用 Jest Mock 模块测试 Redux Thunk 异步操作

  28. 28

    jest.mock() 使用 webpack 别名的正确配置是什么?

  29. 29

    jest.spyOn 相当于 jest.mock

热门标签

归档