Синон. 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()
.