如何解决使用 Mocha 模拟 exec 命令
我为 azure devops 编写了一个简单的自定义任务,该任务执行一些命令并将其记录在 azure 管道中。但是,我想使用 Mocha 对其进行单元测试。这是我要进行单元测试的 .ts 文件。
index.ts
import tl = require('azure-pipelines-task-lib/task');
function run() {
const child_process = require('child_process')
var command: string = "some command";
child_process.exec(command,(errorin: any,stdoutin: any,stderrin: any) => {
if (errorin) {
tl.setResult(tl.TaskResult.Failed,errorin);
return;
}
else {
console.log("stdout: " + stdoutin);
}
})
}
run();
mochatestsuite.ts
import * as path from 'path';
import * as assert from 'assert';
import * as ttm from 'azure-pipelines-task-lib/mock-test';
describe('Sample task tests',function () {
before( function() {
});
after(() => {
});
it('should succeed',function(done: Mocha.Done) {
this.timeout(10000);
let tp = path.join(__dirname,'mochatest.js');
let tr: ttm.MockTestRunner = new ttm.MockTestRunner(tp);
tr.run();
console.log(tr.succeeded);
assert.equal(tr.succeeded,true,'should have succeeded. Error: '+tr.errorIssues[0]);
assert.equal(tr.warningIssues.length,"should have no warnings");
assert.equal(tr.errorIssues.length,tr.errorIssues[0]);
done();
});
});
mochatest.ts
import path = require('path');
import ma = require('azure-pipelines-task-lib/mock-answer');
import tmrm = require('azure-pipelines-task-lib/mock-run');
import child_process = require('child_process')
let taskPath = path.join(__dirname,'..','index.js');
let tmr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath);
let a: ma.TaskLibAnswers = <ma.TaskLibAnswers>{
exec: {
"some command": <ma.TaskLibAnswerExecResult> {
"code": 0,"stdout": "Success"
}
}
}
tmr.setAnswers(a);
tmr.run();
这似乎不起作用。 我收到这个错误。 AssertionError [ERR_ASSERTION]:应该成功了。错误:错误:命令失败:某些命令 'some' 未被识别为内部或外部命令
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。