Jest - 测试try-catch块

时间:2017-07-20 00:28:02

标签: javascript unit-testing jestjs

我正在尝试使用Jest测试try catch块。 E.g。

// filename: foo.js

const foo = () => {
  let js = 'somejs'
  try {
    eval(js)  
  } catch (e) {
    document.location = 'redirect/to/page'
    return false
  }
  return true
}

export default foo

你是否模仿eval(不是我选择使用eval。这是我的老板代码)然后让它扔掉?如果是这样,你会怎么做?例如。

eval = jest.fn()    // doesn't work 

所以测试代码可能是:

// filename: foo.spec.js

import foo from './foo'
eval = jest.fn()

describe('foo', () => {
  describe('when eval succeeds', () => {
    it('performs an eval', {
    const result = foo()
    expect(result).toEqual(true)
  })
  describe('when eval fails', () => {
    beforeEach(() => {
      eval.mockImplementation(() => {throw 'error'})
    })
    it('catches the error and redirects', () => {
      const result = foo()
      expect(result).toEqual(false)
    })
  })
})

模拟和测试代码是什么样的?

0 个答案:

没有答案