Javascript 无法模拟现在计算的时刻
我有下面的代码,其中我想模拟mock moment(),它不接受任何值,因此现在捕获日期时间Javascript 无法模拟现在计算的时刻,javascript,reactjs,unit-testing,jestjs,momentjs,Javascript,Reactjs,Unit Testing,Jestjs,Momentjs,我有下面的代码,其中我想模拟mock moment(),它不接受任何值,因此现在捕获日期时间我该如何嘲笑这一点 下面的代码可以工作,但我觉得这很麻烦,因此希望通过jest.mock()来实现它,这对我来说并不适用。 请参见下面的示例 这是可行的,但正如所说的,这看起来不是一个干净的方法。如果这是唯一的方法,请给出建议 在“我的测试”文件夹中创建了一个名为_u; mocks _;的文件夹。 在其中,创建了一个名为moment.js的文件,下面是moment.js的内容 const moment =
我该如何嘲笑这一点 下面的代码可以工作,但我觉得这很麻烦,因此希望通过jest.mock()来实现它,这对我来说并不适用。
请参见下面的示例 这是可行的,但正如所说的,这看起来不是一个干净的方法。如果这是唯一的方法,请给出建议 在“我的测试”文件夹中创建了一个名为_u; mocks _;的文件夹。
在其中,创建了一个名为moment.js的文件,下面是moment.js的内容
const moment = jest.requireActual('moment')
export default ((timestamp = 0) => {
return moment(timestamp)
})
希望不必为每个新的模拟类型创建额外的文件夹和文件。
因此尝试了以下方法,但似乎不起作用 快照中的时间不同。
如果我在jest.requireActual('moment')(0)中传递,我以1970年的日期结束,快照尝试与实际日期匹配,因此它不是嘲弄。
当我将其保留为空时,快照比较的日期以毫秒为单位结束。再说一次,不是很好
test('some test', () => {
jest.mock('moment', () => {
return () => jest.requireActual('moment')()
})
const wrapper = shallow(<Custom/>)
expect(wrapper).toMatchSnapshot()
})
test('some test',()=>{
开玩笑的模仿('时刻',()=>{
return()=>jest.requireActual('moment')()
})
常量包装器=浅()
expect(wrapper.toMatchSnapshot())
})
这是正在测试的组件。(浓缩仅用于展示瞬间部分)
类自定义扩展组件{
建造师(道具){
超级(道具)
此.state={
有时:瞬间
}
}
render(){
返回(
{这个州,某个时候}
)
}
}
你可以适应当下——将时间视为一种依赖,不要嘲笑你不拥有的东西。看看这些答案,也许你会发现一些有用的东西
class Custom extends Component {
constructor(props) {
super(props)
this.state = {
someTime: moment()
}
}
render() {
return (
<p>{this.state.someTime}</p>
)
}
}