我正在对接收日期作为变量的组件进行单元测试。我的测试失败,因为实际和预期对象中的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);
});
});
当我运行我的测试时。在上面,它显示了添加了几毫秒的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" />;
任何帮助将不胜感激。
更新 嗨,下面是我要求的时钟。 export default class Clock extends 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)
,然后我意识到Clock组件返回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);
});
});
现在它的工作。感谢您的时间。顺便说一句,我正在运行并重新启动并react-addons-test-utils
lib进行测试。