我们有以下类:
组件1:
import React, { Component } from 'react'
import {foo} from 'blah'
import {bar} from 'blah-blah'
export default class Component1 extends Component {
static propTypes = {
...
...
}
...
...
save() {
doSomeOp()
}
render() {
...
...
}
}
组件2:
import React, { Component } from 'react'
import {foo} from 'blah'
import {bar} from 'blah-blah'
export default class Component2 extends Component {
static propTypes = {
...
...
}
...
...
render() {
}
}
现在,我们在包模块中有以下组件- '@foo-bar/package'。这个包的index.js如下所示:
index.js:
import Component1 from './src/component1'
import Component2 from './src/component2'
export { Component1, Component2 }
这个包在我试图测试的另一个组件中使用。该组件的代码如下:
TestComponent:
import React from 'react'
import { Component1 } from '@foo-bar/package'
export function TestComponent(props) {
...
...
return (
<Component1 />
)
}
我有一些逻辑在这个TestComponent
触发Component1
的save()
方法。我打算做的是保持Component1
的所有其他属性相同,但只模拟save()
方法。这怎么可能呢?谢谢!
jest.mock('@foo-bar/package', () => {
???
})
您可以尝试:
import { Component1 } from '@foo-bar/package'
beforeAll(() => {
jest.spyOn(Component1.prototype, 'save').mockImplementation(() => jest.fn())
})