BeforeAll и AfterAll в тестовых примерах javascript

Я хочу сделать что-то до всех тестов, потом после? Как лучше организовать мой код? Например: сделайте резервную копию некоторых переменных -> очистите их -> протестируйте что-нибудь -> восстановите резервные копии. 'beforeEach' и 'afterEach' слишком дороги. Спасибо!


person user2996905    schedule 12.02.2014    source источник


Ответы (4)


Довольно простое решение:

describe("all o' my tests", function() {

  it("setup for all tests", function() {
    setItUp();
  });

  describe("actual test suite", function() {

  });

  it("tear down for all tests", function() {
    cleanItUp();
  });

});

Это имеет то преимущество, что вы действительно можете поместить свою установку/разборку где угодно (например, в начале/конце вложенного набора).

person edan    schedule 23.06.2014
comment
Вы можете ввести запах кода, если измените состояние в блоке it. Блоки it предназначены исключительно для утверждений без логики. - person gnerkus; 30.08.2015

Jasmine >= 2.1 поддерживает beforeAll/afterAll для однократной настройки и демонтажа вашего пакета.

Если вы используете Jasmine 1.x, вы можете использовать для этого it (как было предложено другими) или загрузить node_module, который поддерживает beforeAll/afterAll, например жасмин перед всем.

person Frank van Wijk    schedule 16.04.2015

Вызов функции до начала всех тестов тривиален; однако Jasmine (по крайней мере, 1.3.1) не позволяет вам указать свой собственный готовый обратный вызов вне API репортера.

Вот небольшая хитрость, которую я нашел в Группах Google. Добавьте это к вашему SpecRunner.html или эквивалентному.

var oldCallback = jasmineEnv.currentRunner().finishCallback;

jasmineEnv.currentRunner().finishCallback = function () {
    oldCallback.apply(this, arguments);

    // Do your code here
};

jasmineEnv.execute();
person Eric    schedule 12.02.2014

Jasmine предоставляет возможность написать собственный отчет и прикрепить его. Для реализации репортера существуют базовые обратные вызовы, такие как initialize, jasmineStarted и jasmineDone. С этим вы можете достичь вашего требования. Например, в Jasmine 2.0 обратитесь к файлу jasmine-html.js, чтобы иметь общее представление.

person user3037143    schedule 12.02.2014
comment
Проверьте автономный выпуск Jasmine2.0, расположение файла: jasmine-standalone-2.0.0\lib\jasmine-2.0.0\jasmine-html.js. - person user3037143; 20.06.2014