簡體   English   中英

如何使用sinon在測試中的函數中添加類方法?

[英]How to stub a class method inside a function under test using sinon?

   //Some utility 
   import SomeClass from 'someclass';

   const LoadService = {

     getData(){
     const someClassInstance = new SomeClass('param1', 'param2');
     return someClassInstance.load('param33')
     },

   };

  module.exports =LoadService;

打算通過模擬SomeClass來測試LoadService,因為SomeClass已被測試。 我正在使用sinon 2.1.0

我想檢查LoadService的getData方法。 是否可以模擬SomeClass load類方法。

任何幫助表示贊賞。

首先,您必須模擬someClass模塊,以便它將返回一個開玩笑的間諜並將該模塊導入您的測試中。

import SomeClass from 'someClass'
jest.mock('someclass', ()=>jest.fn())

那么您需要為load功能和模塊本身創建間諜。

const load = jest.fn()
SomeClass.mockImplementation(jest.fn(()=>({load})))

調用LoadService后,您可以檢查是否已調用模塊本身和load功能

expect(someClassMock).toHaveBeenCalledWith('param1', 'param2')
expect(load).toHaveBeenCalledWith('param33')

因此,畢竟不需要使用Sinon可以使用Jest完成所有操作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM