Легкая очистка пазухи

Есть ли способ легко сбросить все макеты и заглушки Syson Spys, которые будут корректно работать с блоками Mocha beforeEach.

Я вижу, что песочница - это вариант, но я не понимаю, как вы можете использовать песочницу для этого

beforeEach ->
  sinon.stub some, 'method'
  sinon.stub some, 'mother'

afterEach ->
  # I want to avoid these lines
  some.method.restore()
  some.other.restore()

it 'should call a some method and not other', ->
  some.method()
  assert.called some.method
117 голосов | спросил austinbv 19 J000000Thursday12 2012, 06:10:37

4 ответа


0

Вы можете использовать sinon.collection, как показано в этом блоге (от мая 2010 г.) автора sinon библиотека.

API-интерфейс sinon.collection изменился, и его можно использовать следующим образом:

beforeEach(function () {
  fakes = sinon.collection;
});

afterEach(function () {
  fakes.restore();
});

it('should restore all mocks stubs and spies between tests', function() {
  stub = fakes.stub(window, 'someFunction');
}
ответил Dimitris Zorbas 12 J000000Friday13 2013, 01:36:46
0

Если вы хотите, чтобы настройка, в которой будет работать sinon, всегда сбрасывалась сама для всех тестов:

в helper.js:

import sinon from 'sinon'

var sandbox;

beforeEach(function() {
    this.sinon = sandbox = sinon.sandbox.create();
});

afterEach(function() {
    sandbox.restore();
});

Затем в вашем тесте:

it("some test", function() {
    this.sinon.stub(obj, 'hi').returns(null)
})
ответил sethcall 18 J000000Monday16 2016, 15:41:47
0

Обратите внимание, что когда вы используете qunit вместо mocha, вам нужно обернуть их в модуль, например.

module("module name"
{
    //For QUnit2 use
    beforeEach: function() {
    //For QUnit1 use
    setup: function () {
      fakes = sinon.collection;
    },

    //For QUnit2 use
    afterEach: function() {
    //For QUnit1 use
    teardown: function () {
      fakes.restore();
    }
});

test("should restore all mocks stubs and spies between tests", function() {
      stub = fakes.stub(window, 'someFunction');
    }
);
ответил sfuqua 18 PMpFri, 18 Apr 2014 18:54:07 +040054Friday 2014, 18:54:07
0

restore() просто восстанавливает поведение функциональности заготовки, но не сбрасывает состояние заглушек. Вам придется либо обернуть свои тесты с помощью sinon.test и использовать this.stub или по отдельности вызовите reset() в заглушках

ответил Sandeep Adi 16 J0000006Europe/Moscow 2016, 19:22:02

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132