Javascript 无法模拟现在计算的时刻

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 =

我有下面的代码,其中我想模拟mock 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>
        )
    }
}