遵循本指南为VS代码编写简单的扩展,并对这些代码进行自动化测试。我需要在当前文档中有一些预期的文本来运行测试。
我找到了一个脚本的这个例子,它打开一个现有的文本文件并使用它作为输入。
相反,我试图针对测试代码本身中的输入和预期结果运行测试。这似乎更有活力和自制力。
以下是我的尝试:
import * as assert from 'assert';
// You can import and use all API from the 'vscode' module
// as well as import your extension to test it
import * as vscode from 'vscode';
import * as taxi from '../../extension';
suite('Extension Test Suite', () => {
vscode.window.showInformationMessage('Start all tests.');
test('displayDiagnostics - empty, no summary', async () => {
let dcoll = vscode.languages.createDiagnosticCollection('taxi');
const startTime = new Date().getTime();
const showSummary = false;
const result: taxi.Result = {
// eslint-disable-next-line @typescript-eslint/naming-convention
total_errors: 0,
// eslint-disable-next-line @typescript-eslint/naming-convention
total_warnings: 0,
errors: [],
warnings: [],
};
vscode.workspace.openTextDocument({
content: 'The quick brown fox'
})
.then((doc) => {
const diags = taxi.displayDiagnostics(result, doc, startTime, showSummary);
assert.strictEqual(diags.length, 0);
}, (error) => {
assert.fail(error);
});
});*等等
openTextDocument似乎几乎可以工作,但我看到警告说“没有活动的文本编辑器”。
我在做测试时做错了什么吗?
这些测试似乎通过了,即使我包含了一个肯定失败的行,例如
assert.strictEqual(1, 2);(node:79286) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.
(Use `Electron --trace-deprecation ...` to show where the warning was created)
Congratulations, your extension 'highlight-trailing-white-spaces' is now active!
updateDecorations(): no active text editor.
Extension Test Suite
✔ displayDiagnostics - empty, no summary
✔ displayDiagnostics - empty with summary
✔ displayDiagnostics - errors and warnings, no summary
✔ displayDiagnostics
4 passing (24ms)
The extension 'highlight-trailing-white-spaces' is now deactivated.
FAILED to register filesystem provider of vscode.git-extension for the scheme git
Canceled: Canceled
at Object.F [as canceled] (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/services/extensions/node/extensionHostProcess.js:5:1172)
at /Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/services/extensions/node/extensionHostProcess.js:97:9076
at Array.forEach (<anonymous>)
at i.dispose (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/services/extensions/node/extensionHostProcess.js:97:9024)
at p.terminate (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/services/extensions/node/extensionHostProcess.js:102:694)
at s (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/services/extensions/node/extensionHostProcess.js:112:36448)
at Socket.<anonymous> (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/services/extensions/node/extensionHostProcess.js:112:34061)
at Socket.emit (<node_internals>/events.js:327:22)
at Pipe.<anonymous> (<node_internals>/net.js:673:12)
at Pipe.callbackTrampoline (internal/async_hooks.js:131:14) {name: 'Canceled', stack: 'Canceled: Canceled
at Object.F [as canceled]…ckTrampoline (internal/async_hooks.js:131:14)', message: 'Canceled'}发布于 2022-02-16 17:47:50
以下是我使用await的简单解决方案。诀窍是给showTextDocument打电话。这会弹出一个编辑器窗口,其中包含一行文本。抄袭而来。
import * as assert from 'assert';
// You can import and use all API from the 'vscode' module
// as well as import your extension to test it
import * as vscode from 'vscode';
import * as taxi from '../../extension';
suite('Taxi for Email Validation Extension Test Suite', () => {
vscode.window.showInformationMessage('Start all tests.');
test('displayDiagnostics - empty, no summary', async () => {
let dcoll = vscode.languages.createDiagnosticCollection('taxi');
const startTime = new Date().getTime();
const showSummary = false;
const result: taxi.Result = {
// eslint-disable-next-line @typescript-eslint/naming-convention
total_errors: 0,
// eslint-disable-next-line @typescript-eslint/naming-convention
total_warnings: 0,
errors: [],
warnings: [],
};
const doc = await vscode.workspace.openTextDocument({
content: 'The quick brown fox'
});
await vscode.window.showTextDocument(doc);
const diags = taxi.displayDiagnostics(result, doc, startTime, showSummary);
assert.strictEqual(diags.length, 0);
// See https://stackoverflow.com/questions/44733028/how-to-close-textdocument-in-vs-code
await vscode.commands.executeCommand('workbench.action.closeActiveEditor');
});
});https://stackoverflow.com/questions/71134728
复制相似问题