首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VS代码扩展-包括内联输入文档的写入测试

VS代码扩展-包括内联输入文档的写入测试
EN

Stack Overflow用户
提问于 2022-02-15 23:35:34
回答 1查看 146关注 0票数 0

遵循本指南为VS代码编写简单的扩展,并对这些代码进行自动化测试。我需要在当前文档中有一些预期的文本来运行测试。

我找到了一个脚本的这个例子,它打开一个现有的文本文件并使用它作为输入。

相反,我试图针对测试代码本身中的输入和预期结果运行测试。这似乎更有活力和自制力。

以下是我的尝试:

代码语言:javascript
复制
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似乎几乎可以工作,但我看到警告说“没有活动的文本编辑器”。

我在做测试时做错了什么吗?

这些测试似乎通过了,即使我包含了一个肯定失败的行,例如

代码语言:javascript
复制
                assert.strictEqual(1, 2);
代码语言:javascript
复制
(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'}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-16 17:47:50

以下是我使用await的简单解决方案。诀窍是给showTextDocument打电话。这会弹出一个编辑器窗口,其中包含一行文本。抄袭而来

代码语言:javascript
复制
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');

    });
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71134728

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档