gpt4 book ai didi

javascript - 日期对象值发生变化 - JavaScript

转载 作者:行者123 更新时间:2023-12-03 07:49:41 24 4
gpt4 key购买 nike

我正在对接收日期作为变量的组件进行单元测试。我的测试失败了,因为实际和预期对象中的 ate 变量不断向日期值添加几毫秒。

describe('Clock',()=>{
it('works',()=>{
let renderer = createRenderer();
let date = new Date();


renderer.render(<Clock time={ date}> </Clock>);
let actualElement = renderer.getRenderOutput();

let expectedElement = <FormattedTime value={date} hour="numeric" minute="numeric" second="numeric" />;

expect(actualElement).toEqual(expectedElement);
});
});

当我运行测试时。在上面,它显示了预期元素date增加了几毫秒。

-    "value": [Date: 2016-01-28T04:48:57.000Z]
+ "value": [Date: 2016-01-28T04:48:57.893Z]

请问我如何计算日期?或者最好摆脱毫秒。我尝试了很多选项,例如

let date = Math.floor(new Date().getTime()/1000);
let rTime = new Date(date * 1000);

renderer.render(<Clock time={ rTime}> </Clock>);
let actualElement = renderer.getRenderOutput();

let expectedElement = <FormattedTime value={rTime} hour="numeric" minute="numeric" second="numeric" />;

如有任何帮助,我们将不胜感激。

更新你好,下面是我要求的时钟。 导出默认类 Clock 扩展 React.Component {

    constructor(props) {
super(props);

this.state = {
time: new Date(),
};
}

componentDidMount() {
this.interval = setInterval(() => this.setState({ time: new Date() }), 1000);
}

componentWillUnmount() {
clearInterval(this.interval);
}

render() {
const { time } = this.state;
return (
<FormattedTime value={time} hour="numeric" minute="numeric" second="numeric" />
);
}
}

我使用下面建议的date.setMilliseconds(0),然后我意识到时钟组件返回的是0。所以我必须将我的测试更改为下面的测试。

describe('Clock',()=>{
it('works',()=>{
let renderer = createRenderer();
let date = new Date();
date.setMilliseconds(0)

renderer.render(<Clock time={ date}> </Clock>);
let actualElement = renderer.getRenderOutput();
let expectedElement = <FormattedTime value={date} hour="numeric" minute="numeric" second="numeric" />;
actualElement.props.value.setMilliseconds(0);
expect(actualElement).toEqual(expectedElement);
});
});

现在可以工作了。感谢您的时间。顺便说一句,我正在运行 reacjs 和 react-addons-test-utils lib 进行测试。

最佳答案

要消除毫秒,只需将它们设置为零:'date.setMilliseconds (0)'

参见MDN reference

关于javascript - 日期对象值发生变化 - JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35053204/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com