Расширение / тестирование VSCode: имитация методов класса через заглушки Sinon отлично работает при отладке, но не при выполнении тестов из командной строки

#javascript #visual-studio-code #mocha.js #sinon #vscode-extensions

#javascript #visual-studio-code #mocha.js #sinon #vscode-расширения #vscode-extensions

Вопрос:

Я издеваюсь над методами класса controlprovider, используя заглушки Sinon. Он отлично работает, когда я отлаживаю эти тесты в VSCode, но пока я запускаю тесты из командной строки, имитация заглушки Sinon не происходит. Чего-нибудь мне не хватает?

Тестовый файл

 context('Should configure pipeline', function () {
    it('configure pipeline', async function () {
        this.timeout(0);
        await sleep(5000);
        await vscode.extensions.getExtension(extensionId).activate();
        let mockGetInput, mockShowQuickPick, mockShowInformationMessage;
        mockGetInput = sinon.stub(ControlProvider.prototype, 'showInputBox');
        mockGetInput.onFirstCall().resolves('text');

        mockShowQuickPick = sinon.stub(ControlProvider.prototype, 'showQuickPick');
        mockShowQuickPick
            .onFirstCall().resolves(data1)
            .onSecondCall().resolves(data2)

        mockShowInformationMessage = sinon.stub(ControlProvider.prototype, 'showInformationBox');
        mockShowInformationMessage.onFirstCall().resolves("Done");

        // This sleep is added because otherwise the tests run via cmd exits before running executeCommand. Unable to find root cause of this issue.
        await sleep(2000);
        await vscode.commands.executeCommand("configure-cicd-pipeline");

        sinon.assert.calledOnce(mockGetInput);
        sinon.assert.calledTwice(mockShowQuickPick);
        sinon.assert.calledOnce(mockShowInformationMessage);

    });

    after(() => {
        sinon.restore();
    });
});
  

Запустите конфигурацию отладки

     {
        "name": "Extension Tests",
        "type": "extensionHost",
        "request": "launch",
        "runtimeExecutable": "${execPath}",
        "args": [
            "${workspaceRoot}/out/configure/test/test-fixtures/",
            "--extensionDevelopmentPath=${workspaceFolder}",
            "--extensionTestsPath=${workspaceFolder}/out/configure/test"
        ],
        "outFiles": [
            "${workspaceFolder}/out/configure/test/**/*.js"
        ]
    },
  

package.json

 "scripts": {
    "vscode:prepublish": "npm run compile",
    "compile": "tsc -p ./ amp;amp; node copyStaticFiles.js",
    "watch": "node copyStaticFiles.js amp;amp; tsc -watch -p ./",
    "pretest": "npm run compile",
    "test": "cp -r ./src/configure/test/test-fixtures/ ./out/configure/test/test-fixtures/ amp;amp; node ./out/configure/test/runTest.js"
},