我想跨测试文件共享模拟实现,但我不想全局模拟该模块。默认情况下我不需要模拟模块,但在某些情况下我想跨文件应用相同的模拟逻辑。
jest.mock('some-module', () => {
//... long mock implementation
})
Run Code Online (Sandbox Code Playgroud)
我没有找到模块化笑话模拟的方法,我已经尝试了以下技术,但不起作用
// sharedMocks.js
export const mockSomeModule = () => {
jest.mock('some-module', () => { /* ... */ })
}
// from other file
import { mockSomeModule } from '../sharedMocks'
mockSomeModule()
Run Code Online (Sandbox Code Playgroud)
或者
// sharedMocks.js
export const someModuleMock = () => {
//... long mock implementation
}
// from other file
import { someModuleMock } from '../sharedMocks'
jest.mock('some-module', someModuleMock)
Run Code Online (Sandbox Code Playgroud) 我想material-ui在这样的组件中使用我的主题中的颜色:
const MyComponent = props => (
<UsersIcon color={currentTheme.primary1Color} />
)
Run Code Online (Sandbox Code Playgroud)
所以,我需要从当前提供的主题中提取一个值。
我找到了解决这种情况的有效解决方案,使用上下文来检索当前主题:
const MyComponent = (props, {muiTheme}) => (
<UsersIcon color={muiTheme.palette.primary1Color} />
)
contextTypes = {
muiTheme: PropTypes.object.isRequired,
}
Run Code Online (Sandbox Code Playgroud)
该React上下文使用“引擎盖下” material-ui,所以我的解决方案是不是面向未来-的执行MUI可以改变- ,有没有办法在适当的(或推荐)的方式来解决这个问题?