[Jest] Automate your migration to Jest using codemods

Jest is a fantastic testing library, but maybe you've been putting off the switch because migrating all of your existing tests from another library seems like a daunting task. With jest-codemods, you can automate most, if not all, of that migration! The jest-codemods CLI is a wrapper around jscodeshift that is specifically focused on helping you migrate from several popular test runner and assertion library combinations to Jest. In this lesson, we'll walk through converting a small sampling of tests created with Mocha, Sinon and Chai over to Jest. We'll even take a look at a couple edge cases where the conversion requires some manual intervention so you can be prepared for those in your own project.

 

Source code

 

Install:

npm i -D jest

npm i -g jest-codemons

 

Run:

jest-codemods  # default path is under src

 

 

There is a waring:

"

jest-codemods warning: (src/index.spec.js) Usage of package "sinon" might be incompatible with Jest

"

  describe('once', () => {
    test('Only invokes the function once', () => {
      const fn = sinon.stub()
      const onceFn = once(fn)
      onceFn()
      onceFn()
      onceFn()
      onceFn()
      sinon.assert.calledOnce(fn)
    })
  })

 

Change to:

  describe('once', () => {
    test('Only invokes the function once', () => {
      const fn = jest.fn();
      const onceFn = once(fn)
      onceFn()
      onceFn()
      onceFn()
      onceFn()
      expect(fn).toHaveBeenCalledTimes(1);
    })
  })

 

 

One failed test:

expect(result).to.eq(3)

 

Change to:

expect(result).toBe(3)

 

posted @ 2018-08-22 01:10  Zhentiw  阅读(333)  评论(0编辑  收藏  举报