В чем разница между заглушками и подделками? - PullRequest
2 голосов
/ 20 марта 2020

Синон. js обеспечивает Подделки . Но я не видел существенных различий с Stubs . Вот пример тестируемого кода:

index.ts:

export function main(callback) {
  return callback();
}

index.test.ts:

import sinon from 'sinon';
import { main } from './';

describe('sinon fake vs stub', () => {
  it('should pass when using a sinon stub', () => {
    const callback = sinon.stub().returns('value');
    const actual = main(callback);
    sinon.assert.match(actual, 'value');
    sinon.assert.calledOnce(callback);
  });

  it('should pass when using a sinon fake', () => {
    const callback = sinon.fake.returns('value');
    const actual = main(callback);
    sinon.assert.match(actual, 'value');
    sinon.assert.calledOnce(callback);
  });
});

Результаты теста:

  sinon fake vs stub
    ✓ should pass when using a sinon stub
    ✓ should pass when using a sinon fake


  2 passing (9ms)

Для sinon.fake.throws(value);, sinon.fake.resolves(value);, sinon.fake.yields([value1, ..., valueN]); API и так далее. Я также могу использовать sinon.stubs(), чтобы сделать это.

Я часто использую sinon.stubs(), документация Fakes не дает специальных сцен, можно использовать только подделки. В настоящее время я могу протестировать все сценарии ios, используя sinon.stubs().

...