Как я могу проверить аппаратно-зависимые функции? - PullRequest
0 голосов
/ 28 декабря 2018

Я пишу приложение Node.js, которое использует внешние устройства, такие как принтеры и устройства чтения смарт-карт.

Я пытаюсь написать тесты для функций, которые используют эти устройства, и моей конечной целью было быбыть настроить CI для моего проекта.Тем не менее, я понятия не имею, возможно ли с этой целью издеваться над аппаратными устройствами или если это вообще возможно.

Если это поможет, я использую модуль графен для считывателей смарт-карти узел-принтер модуль для принтера.

1 Ответ

0 голосов
/ 28 декабря 2018

Как правило, от вас ожидают насмешки вызовов API для используемых вами модулей.

Чтобы привести пример с использованием node-printer, в jasmine:

const printer = require('node-printer');
const myModule = require('module i am testing');

describe('printSomething', function () {
    it('prints something and resolves when it completes', function (done) {
        // Mock the printDirect method on node-printer, to immediately
        // call the success callback. You might need to mock additional
        // methods if you make multiple API calls in one method.
        spyOn(printer, 'printDirect').andCallFake(options => {
            options.success(12345);
        });

        myModule.printSomething('blah').then(result => {
            // To be sure your module is calling the module with the expected
            // arguments, you can check the actual arguments passed.
            expect(printer.printDirect.calls.allArgs()).toEqual([[{
                data: 'the exact data',
                printer: 'PRINTERNAME',
                success: jasmine.any(Function)
            }]]);
            done();
        }).catch(done.fail);
    });
});

Вы можете создать аналогичные примеры практически в любой тестовой среде (jest, mocha + sinon и т. Д.).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...