Spec-Zone.ru › Sinon.JS 2

Песочницы

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

var sinon = require('sinon');

var myAPI = { hello: function () {} };
var sandbox = sinon.sandbox.create();

describe('myAPI.hello method', function () {

    beforeEach(function () {
        // stub out the `hello` method
        sandbox.stub(myAPI, 'hello');
    });

    afterEach(function () {
        // completely restore all fakes created through the sandbox
        sandbox.restore();
    });

    it('should be called once', function () {
        myAPI.hello();
        sinon.assert.calledOnce(myAPI.hello);
    });

    it('should be called twice', function () {
        myAPI.hello();
        myAPI.hello();
        sinon.assert.calledTwice(myAPI.hello);
    });
});

API песочницы

var sandbox = sinon.sandbox.create();

Создаёт объект песочницы со шпионами, заглушками и моделями.

var sandbox = sinon.sandbox.create(config);

Метод sinon.sandbox.create(config) часто является функцией интеграции и может использоваться в сценариях, включая глобальный объект для координации всех фейков.

Песочницы частично настраиваются по умолчанию, так что вызов:

var sandbox = sinon.sandbox.create({});

будет включать дополнительные значения по умолчанию, аналогичные:

var sandbox = sinon.sandbox.create({
    // ...
    injectInto: null,
    properties: ["spy", "stub", "mock"],
    useFakeTimers: false,
    useFakeServer: false
});

Значения useFakeTimers и useFakeServers равны false, в отличие от значений по умолчанию в sinon.defaultConfig:

sinon.defaultConfig = {
    // ...
    injectInto: null,
    properties: ["spy", "stub", "mock", "clock", "server", "requests"],
    useFakeTimers: true,
    useFakeServer: true
}

Чтобы получить полную песочницу со заглушками, шпионами и т. д. и фальшивыми таймерами и серверами, можно вызвать:

// Inject the sinon defaults explicitly.
var sandbox = sinon.sandbox.create(sinon.defaultConfig);

// (OR) Add the extra properties that differ from the sinon defaults.
var sandbox = sinon.sandbox.create({
    useFakeTimers: true
    useFakeServer: true
});
injectInto

Методы песочницы могут быть внедрены в другой объект для удобства. Параметр конфигурации injectInto может назвать объект, к которому будут добавлены свойства.

properties

Какие свойства внедрить. Обратите внимание, что простое именование «сервер» здесь недостаточно, чтобы свойство server появилось в целевом объекте, вам также необходимо установить useFakeServer в true.

useFakeTimers

Если true, в песочнице будет свойство clock. Также может быть Array свойств таймера для имитации.

useFakeServer

Если true, свойства server и requests добавляются в песочницу. Также может быть объект, используемый для фальшивого сервера. По умолчанию используется sinon.fakeServer, но если вы используете jQuery 1.3.x или какую-либо другую библиотеку, которая не устанавливает обработчик onreadystatechange XHR, вы можете сделать так:

sinon.config = {
    useFakeServer: sinon.fakeServerWithClock
};

sandbox.assert();

Удобная ссылка для sinon.assert

С тех пор как sinon@2.0.0

sandbox.spy();

Работает точно так же, как sinon.spy, но также добавляет возвращённый шпион в внутренний набор фейков для лёгкого восстановления с помощью sandbox.restore()

sandbox.stub();

Работает почти точно так же, как sinon.stub, но также добавляет возвращённую заглушку во внутренний набор фейков для лёгкого восстановления через sandbox.restore().

Метод песочницы stub также может использоваться для заглушки любого типа свойства. Это полезно, если вам нужно переопределить свойство объекта на время теста и восстановить его по окончании теста.

sandbox.mock();

Работает точно так же, как sinon.mock, но также добавляет возвращённую модель в внутренний набор фейков для лёгкого восстановления через sandbox.restore()

sandbox.useFakeTimers();

Имитирует таймеры и связывает объект clock с песочницей, так что он также восстанавливается при вызове sandbox.restore().

Доступ через sandbox.clock.

sandbox.useFakeXMLHttpRequest();

Имитирует XHR и связывает полученный объект с песочницей, так что он также восстанавливается при вызове sandbox.restore().

Начиная с версии 2.x, вы больше не можете получить доступ к запросам через sandbox.requests - для этого используйте sandbox.useFakeServer. Эта функция сопоставляется с sinon.useFakeXMLHttpRequest, только с применением песочницы.

sandbox.useFakeServer();

Имитирует XHR и связывает объект сервера с песочницей, так что он также восстанавливается при вызове sandbox.restore().

Доступ к запросам через sandbox.requests и к серверу через sandbox.server

sandbox.usingPromise(promiseLibrary);

Заставляет все заглушки, созданные из песочницы, возвращать обещания, используя определённую библиотеку Promise вместо глобальной, при использовании stub.rejects или stub.resolves. Возвращает заглушку для возможности цепочки вызовов.

С тех пор как sinon@2.0.0

sandbox.restore();

Восстанавливает все фейки, созданные через песочницу.

sandbox.reset();

Сбрасывает внутреннее состояние всех фейков, созданных через песочницу.

sandbox.resetBehavior();

Сбрасывает поведение всех заглушек, созданных через песочницу.

С тех пор как sinon@2.0.0

sandbox.resetHistory();

Сбрасывает историю всех заглушек, созданных через песочницу.

С тех пор как sinon@2.0.0

sandbox.verify();

Проверяет все модели, созданные через песочницу.

sandbox.verifyAndRestore();

Проверяет все модели и восстанавливает все фейки, созданные через песочницу.

© 2010–2017 Christian Johansen
Licensed under the BSD License.
http://sinonjs.org/releases/v2.4.1/sandbox

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API