Proxyquire要求声明单元测试

时间:2018-06-21 17:40:29

标签: javascript node.js unit-testing sinon proxyquire

  killExistingProcessOnPort (port) {
    return new Promise((resolve, reject) => {
      find('port', port)
        .then((list) => {
          if (!list.length) {
            console.log('abc')
            return resolve(true)
          }
          for (let i in list) {
            let currentProcess = list[i]
            this.logger.debug(`Killing existing process (${currentProcess.pid}) on port: ${port}`)
            terminate(currentProcess.pid)
          }
          resolve(true)
        })
}

我正在编写一些单元测试,我必须尝试对结果进行存根或模拟(查找过程)。基本来说,find在指定端口上查找当前进程,并且find-process的返回值为Promise。 Promise的解析值是进程的数组列表:[{pid:1234},{pid:6666}]。以下是我的单元测试,但我被卡住了。

const find = require('find-process')
const proxyquire = require('proxyquire')


it('resolves true | terminates existing process on specified port', function () {
  // Arrange
  let prox=proxyquire('../../../../../EmulatorNodeListener/Appium/Models/Android/AndroidAppiumServer', {'find-process':  function(){
      return { then : function() { return Promise.resolve([{pid:1234}])  } } [{pid:1234}]}}).AndroidAppiumServer
  let test = new prox(1, new MockLogger())

  // Act
  return test.killExistingProcessOnPort(1234)
    .then((result) => {
      // Assert
      assert.equal(result, true)
    })
})

上面的测试给我一个错误“ TypeError:无法读取未定义的属性'then'”。我猜这是因为存根或返还承诺不正确吗?

0 个答案:

没有答案