如何测试传递的功能?

时间:2019-05-27 19:19:29

标签: javascript unit-testing testing jestjs

doc是pdfkit文档的一个实例...

import PDFDocument from 'pdfkit'
const doc = new PDFDocument()

...传递给我的函数:

export const outputTitle = (doc, title) => {
  if (!title) return null

  doc
    .fontSize(15)
    .font('Helvetica-Bold')
    .text(title, 380, 160)
}

现在,我需要使用笑话来为此功能编写单元测试。

describe('outputTitle()', () => {
  const doc = jest.fn()

  test('should return null if parameter title is missing', () => {
    // SETUP
    const title = undefined
    // EXECUTE
    const result = outputTitle(doc, title)
    // VERIFY
    expect(result).toBeNull()
  })

  test('should call doc()', () => {
    // ???
  })
})

但是我如何测试第二部分,即传递标题值的情况? 我认为我对doc的嘲弄是错误的。

1 个答案:

答案 0 :(得分:1)

describe('outputTitle()', () => {
  const textSpy = jest.spyOn(doc, 'text');

  test('should call doc with title', () => {
      outputTitle(doc, 'some title');

      expect(textSpy).toBeCalledWith('some title');
    });
})

Reference