zoukankan      html  css  js  c++  java
  • [Jest] Use property matchers in snapshot tests with Jest

    With the right process in place, snapshot tests can be a great way to detect unintended changes in any part of your application that can be serialized. By grabbing a snapshot of your data in a known state, it takes a relatively small amount of code to check new output against your snapshot on each test run. When the output you want to test includes volatile data such as random number or dates, you end up updating your snapshot on every test run and your snapshot tests lose their value. Starting with Jest 23.0, the toMatchSnapshot method of expect allows you to define property matchers for specific keys in objects. Now we can specify that a value is of a certain type, while ignoring the specific value. In this lesson, we'll see an example of an object with non-deterministic values, and use property matchers in .toMatchSnapshot()to verify types while allowing for variation in those values.

    const { createPerson } = require('./index')
    
    describe('createPerson', () => {
      it('Creates a person object', () => {
        const result = createPerson('John', 'Smith')
        expect(result).toMatchSnapshot({
          id: expect.any(String),
          createdAt: expect.any(Date)
        })
      })
    })

    Then function 'createPreson' will genearte an object with random 'id' and 'createAt' time. When we usinig .toMatchSnapshot() for random value, it wil faild at second time.

    To solve the problem, we can just check the type instead of actual value:

    expect(result).toMatchSnapshot({
          id: expect.any(String),
          createdAt: expect.any(Date)
        })

    It can make our test more flexable.

  • 相关阅读:
    Logging模块
    uWSGI和WSGI区别
    python内置函数getattr用法
    linux 升级python2.7
    JavaScript中判断null、undefined与NaN的方法
    python计算两个数的百分比
    BeautifulSoup中查找元素 select() 和find()区别
    Windows系统以及谷歌浏览器快捷键,控制台常用命令
    自己看源码的一些方法和心得分享
    JDK源码之AbstractStringBuilder类分析
  • 原文地址:https://www.cnblogs.com/Answer1215/p/9274673.html
Copyright © 2011-2022 走看看