Spec-Zone.ru › Sinon.JS 1

Песочницы

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

Если вы используете фиктивные таймеры, фиктивные запросы XHR или подменяете/проверяете доступные глобально свойства, вам следует использовать песочницу для упрощения очистки. По умолчанию свойства «шпион», «заглушка» и «модель» песочницы привязаны к объекту, на котором выполняется функция. Поэтому, если вы не хотите вручную restore(), вам нужно использовать this.spy() вместо sinon.spy() (и заглушку, модель).

"test using sinon.test sandbox": sinon.test(function () {
    var myAPI = { method: function () {} };
    this.mock(myAPI).expects("method").once();

    PubSub.subscribe("message", myAPI.method);
    PubSub.publishSync("message", undefined);
})

API песочницы

var sandbox = sinon.sandbox.create();

Создаёт объект песочницы

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

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

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

Настройка по умолчанию выглядит следующим образом:

sinon.defaultConfig = {
    // ...
    injectInto: null,
    properties: ["spy", "stub", "mock", "clock", "server", "requests"],
    useFakeTimers: true,
    useFakeServer: true
}
injectInto
Методы песочницы можно ввести в другой объект для удобства. Параметр конфигурации injectInto может указывать объект, к которому будут добавлены свойства. Обычно это устанавливается sinon.test таким образом, что он является значением this в данной тестовой функции.
properties
Какие свойства вводить. Обратите внимание, что простое указание «сервер» здесь недостаточно для того, чтобы свойство server появилось в целевом объекте, вам также необходимо установить useFakeServer в true.
useFakeTimers
Если true, у песочницы будет свойство clock. Также может быть массивом свойств таймеров для имитации.
useFakeServer
Если true, свойства server и requests добавляются к песочнице. Также может быть объектом для использования фиктивного сервера. По умолчанию это sinon.fakeServer, но если вы используете jQuery 1.3.x или какую-либо другую библиотеку, которая не устанавливает обработчик onreadystatechange для XHR, вам может понадобиться сделать следующее:
sinon.config = {
    useFakeServer: sinon.fakeServerWithClock
};

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().

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

sandbox.useFakeServer();

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

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

sandbox.restore();

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

sandbox.reset();

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

sandbox.verify();

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

sandbox.verifyAndRestore();

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

Методы тестирования

Примечание: В sinon@2.0.0 это было выделено в отдельный модуль sinon-test.

Оборачивание тестовых методов в sinon.test позволяет Sinon.JS автоматически создавать и управлять песочницами для вас. Поведение функции можно настроить с помощью sinon.config.

var wrappedFn = sinon.test(fn);`

Функция wrappedFn работает точно так же, как и оригинальная во всех отношениях — дополнительно создаётся объект песочницы и автоматически восстанавливается по завершении вызова функции.

По умолчанию свойства «шпион», «заглушка» и «модель» песочницы привязаны к объекту, на котором выполняется функция. Таким образом, вы можете сделать this.spy() (и заглушка, модель), и это работает точно так же, как sandbox.spy() (и заглушка, модель), за исключением того, что вам не нужно вручную restore().

{
    injectIntoThis: true,
    injectInto: null,
    properties: ["spy", "stub", "mock", "clock", "server", "requests"],
    useFakeTimers: true,
    useFakeServer: true
}

Просто установите sinon.config для переопределения любых или всех этих значений, например:

sinon.config = {
    useFakeTimers: false,
    useFakeServer: false
}

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

sinon.config

Настройка контролирует, как Sinon привязывает свойства при использовании sinon.test.

Настройка по умолчанию выглядит следующим образом:

Boolean injectIntoThis
Приводит к вводу свойств в объект `this` тестовой функции. Значение по умолчанию true.
Object injectInto
Объект для привязки свойств. Если это null (по умолчанию), и injectIntoThis является false (не по умолчанию), свойства передаются в качестве аргументов тестовой функции.
Array properties
Свойства для экспонирования. По умолчанию все: ["spy", "stub", "mock", "clock", "server", "requests"]. Однако последние три свойства привязываются только в том случае, если следующие два параметра конфигурации true (что по умолчанию).
Boolean useFakeTimers
Приводит к имитации таймеров и позволяет экспонировать свойство clock. Значение по умолчанию true.
Boolean useFakeServer
Приводит к созданию фиктивных XHR и сервера и позволяет экспонировать свойства server и requests. Значение по умолчанию true.

Тестовые случаи

Если вам нужно поведение sinon.test для более чем одного тестового метода в тестовом случае, вы можете использовать sinon.testCase, которое ведет себя точно так же, как обертывание каждого теста в sinon.test с одним исключением: setUp и tearDown могут совместно использовать фиктивные данные.

var obj = sinon.testCase({});

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

Spec-Zone.ru

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