Я хочу сделать что-то до всех тестов, потом после? Как лучше организовать мой код? Например: сделайте резервную копию некоторых переменных -> очистите их -> протестируйте что-нибудь -> восстановите резервные копии. 'beforeEach' и 'afterEach' слишком дороги. Спасибо!
BeforeAll и AfterAll в тестовых примерах javascript
Ответы (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();
});
});
Это имеет то преимущество, что вы действительно можете поместить свою установку/разборку где угодно (например, в начале/конце вложенного набора).
it
. Блоки it
предназначены исключительно для утверждений без логики.
- person gnerkus; 30.08.2015
Jasmine >= 2.1 поддерживает beforeAll
/afterAll
для однократной настройки и демонтажа вашего пакета.
Если вы используете Jasmine 1.x, вы можете использовать для этого it
(как было предложено другими) или загрузить node_module, который поддерживает beforeAll/afterAll, например жасмин перед всем.
Вызов функции до начала всех тестов тривиален; однако 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();
Jasmine предоставляет возможность написать собственный отчет и прикрепить его. Для реализации репортера существуют базовые обратные вызовы, такие как initialize
, jasmineStarted
и jasmineDone
. С этим вы можете достичь вашего требования. Например, в Jasmine 2.0 обратитесь к файлу jasmine-html.js
, чтобы иметь общее представление.