2017-06-16 98 views
0
//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如何使用sinon在被测函数内部对类方法进行存根?

我想检查LoadService的getData方法。是否可以模拟的load类方法。

任何帮助表示赞赏。

回答

1

首先,你必须嘲笑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') 

所以毕竟没有必要使用兴农一切都可以用玩笑

+0

完成我在'LoadService'上调用'getData',但是目前它正在调用'SomeClass'的实际'load'方法而不是模拟。 –

+0

Mhmm,这意味着'SomeClass'没有被模拟,你能记录''''''''''''''''''''''''''''''' –

+0

你不应该指示jest准备嘲笑导入_before_进行导入吗? – oligofren

相关问题