Sinon / Chai / Sandbox - проверка правильности передачи параметров в функцию - PullRequest
0 голосов
/ 23 сентября 2019

Я пытаюсь проверить, выдает ли моя функция ошибку, если я передаю неверные параметры, как вы можете видеть в коде этой строки:

 if (!query.name || !query.formName) throw new Error('required parameters: name, formName')

, но я получаюошибка «AssertionError: ожидалось, что undefined будет функцией».Насколько я вижу, я назначил функцию для результата, и я проверяю это?

const sendEmail = require('../src/lib/sendEmail')

describe('sendEmail', function () {
  let sandbox = null

  before(() => {
    sandbox = sinon.createSandbox()
  })

  afterEach(() => {
    sandbox.restore()
  })

  describe('sendEmail', () => {
    context('throw error without params', () => {
      let mockParams, result
      beforeEach(async () => {
        mockParams = {
          formName: 'form name',
          emailName: 'email name'
        }
        sandbox.stub(sendEmail, 'sendEmail').withArgs({ formName: 'form name', emailName: 'email name', name: 'person' })
        result = await sendEmail.sendEmail(mockParams)
      })

      it('should throw an error', () => {
        expect(result).to.throw(Error)
      })
    })
  })
})

sendEmail.js

sendEmail.sendEmail = async query => {
  if (!query.name || !query.formName) throw new Error('required parameters: name, formName')
  const [err, data] = await to(request({
   // some stuff happens
  }))
  if (err) throw err
  return data
}

module.exports = sendEmail
...