首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jest和new Date()的测试

问jest和new Date()的测试
EN

Stack Overflow用户
提问于 2019-01-23 22:24:30
回答 2查看 21.3K关注 0票数 17

我正在尝试测试类似的函数:

代码语言:javascript
复制
function foo() {
    return {
        key_a: "val_a",
        key_b: new Date()
};

在这种情况下,我如何创建一个预期的对象进行测试?

代码语言:javascript
复制
const expectedObject = {
    key_a: "val_a",
    key_b: new Date()
}
expect(foo()).toEqual(expectedObject)?
- Expected
+ Received
- "key_b": 2019-01-23T14:04:03.060Z,
+ "key_b": 2019-01-23T14:04:03.061Z,
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-24 01:17:15

有多种方法可以做到这一点,this thread中讨论了很多方法。

在这种情况下,最简单、最干净的方法可能是监视Date,并使用mockFn.mock.instances获取从new Date()返回的内容,如下所示:

代码语言:javascript
复制
function foo() {
  return {
    key_a: "val_a",
    key_b: new Date()
  };
}

test('foo', () => {
  const spy = jest.spyOn(global, 'Date');  // spy on Date
  const result = foo();  // call foo
  const date = spy.mock.instances[0];  // get what 'new Date()' returned
  const expectedObject = {
    key_a: "val_a",
    key_b: date  // use the date in the expected object
  };
  expect(result).toEqual(expectedObject);  // SUCCESS
})
票数 13
EN

Stack Overflow用户

发布于 2019-01-23 23:00:22

如果你尝试测试一个对象的“键和属性”:

代码语言:javascript
复制
const expected = { name:'component name' }
const actual = { name: 'component name', type: 'form' }
expect(actual).toMatchObject(expected)
票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54329398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档