Sinon фиктивное ожидание: проверить строку поля объекта аргумента функции с помощью регулярных выражений? - PullRequest
0 голосов
/ 25 февраля 2020

Привет. Я хочу проверить переданный аргумент функции с помощью регулярного выражения. Дело в том, что я хочу проверить объект, который содержит сгенерированную строку со случайным символом в некоторой части

это строка для проверки

- apple<randomchar>
- banana <randomchar>
- melon <randomchar>

выше сгенерированного текста, может меняться между запустить.

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

const sinon = require('sinon');

const foobar = {
    foo: () => {},
    fooWithObject: () => {},
};
const sinonMock = sinon.mock(foobar);

const textfoobar = (
`- apple randomid
- banana randomid
- melon randomid`
);

sinonMock
    .expects('foo')
    .withArgs(sinon.match(/apple.*banana.*melon/gms));
sinonMock
    .expects('fooWithObject')
    .withArgs({message: sinon.match(/apple.*banana.*melon/gms)});

// this works
foobar.foo(textfoobar);
// this doesn't
foobar.fooWithObject({message: textfoobar});

sinonMock.verify();

Выше ошибка результата, если я обернуть сообщение внутри объекта. Как я могу проверить объект вызова аргумента, который содержит строку, используя регулярное выражение?

1 Ответ

0 голосов
/ 09 марта 2020

Получается, также нужно использовать sinon.mock в объекте контейнера. Так что это работает

sinonMock
    .expects('fooWithObject')
    .withArgs(sinon.match({message: sinon.match(/apple.*banana.*melon/gms)}));
...