Как передать функцию «пофиг» в качестве обратного вызова при тестировании с Mocha и Sinon? - PullRequest
0 голосов
/ 22 октября 2018

Вот мой код:

var assert = require('assert')
var sinon = require('sinon')

// This is the business logic we want to test.
//
// Adds two numbers and returns the result. Also calls the callback with
// the result as argument when callback is defined.
function add(a, b, callback) {
  var result = a + b

  if (typeof callback !== 'undefined') {
    callback(result)
  }

  return result
}


describe('Tests', function () {
  it('test callback is called', function () {
    var callback = sinon.fake()
    add(1, 2, callback)
    assert(callback.calledWith(3))
  })

  it('test return value when callback absent', function () {
    var result = add(1, 2)
    assert(result, 3)
  })

  it('test return value when callback present', function () {
    var result = add(1, 2, sinon.fake())
    assert(result, 3)
  })
})

Вот вывод:

$ node_modules/.bin/mocha foo.js 


  Tests
    ✓ test callback is called
    ✓ test return value when callback absent
    ✓ test return value when callback present


  3 passing (7ms)

Меня беспокоит третий тест с описанием 'test return value when callback present'.Нас не волнует обратный вызов, который мы передаем add() в третьем тесте.Я мог бы также передать анонимную функцию, такую ​​как function () {} вместо sinon.fake().Я вижу, что я также могу передать sinon.stub() или sinon.mock() вместо sinon.fake().

С таким большим количеством различных вариантов, я запутался, что является подходящим аргументом для передачи в качестве функции обратного вызова, когда мы незаботиться о функции вообще?Поскольку все четыре варианта: function () {}, sinon.fake(), sinon.stub() и sinon.mock(), кажется, работают нормально, вот мой вопрос:

  1. Подходит ли sinon проект или модульное тестирование?требует, чтобы мы использовали один вариант над другим для этого случая, или все четыре варианта одинаково технически правильны?
  2. Нужно ли нам знать о каких-либо ловушках, связанных с одним или несколькими из этих вариантов?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...