Когда модуль тестирует результат и/или побочные эффекты от одного логического действия, как вы храните код DRY? Рассмотрим следующий пример, написанный на Жасмин:В стиле теста Arrange-Act-Assert, нормально ли переместить Act в блок beforeEach/setUp?
describe("frobnicate", function() {
var foo;
beforeEach(function() {
foo = getFoo();
});
it("causes side-effect 1", function() {
frobnicate(foo);
expect(sideEffect1).toEqual('you did it');
});
it("causes side-effect 2", function() {
frobnicate(foo);
expect(sideEffect2).toHaveBeenCalled();
});
/* side effect 3, 4, etc. */
});
Уведомление повторный Закон о с призывами к frobnicate(foo)
. В рамках модульного тестирования, что позволяет вложенным описать контексты (например, жасмин), кажется, очень естественно рефакторинг тесты по линиям:
describe("frobnicate", function() {
beforeEach(function() {
var foo = getFoo();
frobnicate(foo);
});
it("causes side-effect 1", function() {
expect(sideEffect1).toEqual('you did it');
});
it("causes side-effect 2", function() {
expect(sideEffect2).toHaveBeenCalled();
});
/* test side effect 3, 4, etc. */
});
Является ли этот стиль каким-либо образом противоречит стилю тестирования ААА? Рефакторинг кода таким образом вызывает другие проблемы?
Прохладный, звучит хорошо для меня. –