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'”。我猜这是因为存根或返还承诺不正确吗?