Как правильно смоделировать require ('uuid / v1') с помощью Sinon - PullRequest
0 голосов
/ 09 июня 2019

schema.js:

const uuid = require('uuid');
.......
const sessionId = uuid.v1();

schema.test.js:

const uuid = sinon.mock(require('uuid'));
.......
uuid.expects('v1').returns('00000000-0000-0000-0000-000000000000');

Вышеописанное работает отлично, и sessionId получает значение 0000......

Однако файл schema.js на самом деле выглядит так:

const uuidv1 = require('uuid/v1');
.......
const sessionId = uuidv1();

Как должно schema.test.js быть так, чтобы sessionId получило значение 0000.....?

const mockUuid = sinon.mock(require('uuid/v1'));
........
mockUuid.returns('00000000-0000-0000-0000-000000000000');

возвращает TypeError: mockUuid.returns is not a function.

const mockUuid = sinon.mock(require('uuid/v1'));
........
mockUuid.expects().returns('00000000-0000-0000-0000-000000000000');

тоже не работает.

Есть идеи?

1 Ответ

1 голос
/ 11 июля 2019

У меня была такая же проблема, и я просто реорганизовал код, чтобы облегчить его тестирование.Я просто изменил импорт с const uuidv1 = require('uuid/v1'); на const uuid = require('uuid'); и изменил места, где он вызывался в коде, с let newUuid = uuidv1(); на let uuid.v1();

Это позволило мне провести модульное тестирование, как в вашемпервый параграф.Частью написания тестов является рефакторинг кода, чтобы его было проще тестировать, поэтому я не чувствовал, что с этим подходом возникла проблема.

...