У нас небольшая проблема с функциональным тестом с casper.js.
Мы запрашиваем один и тот же ресурс дважды, сначала методом GET, а затем методом POST. Теперь при ожидании второго ресурса (POST) он соответствует первому ресурсу и напрямую переходит к функции «затем».
Мы хотели бы иметь возможность проверить метод HTTP в функции «тест», чтобы мы могли правильно идентифицировать ресурс. Пока мы используем код состояния (res.status), но это не решает нашу проблему полностью, нам действительно нужен метод http.
// create new email
this.click(xPath('//div[@id="tab-content"]//a[@class="button create"]'));
// GET
this.waitForResource('/some/resource',
function then() {
this.test.assertExists(xPath('//form[@id="email_edit_form"]'), 'Email edit form is there');
this.fill('form#email_edit_form', {
'email_entity[email]': '[email protected]',
'email_entity[isMain]': 1
}, true);
// POST
this.waitForResource(
function test(res) {
return res.url.search('/some/resource') !== -1 && res.status === 201;
},
function then() {
this.test.assert(true, 'Email creation worked.');
},
function timeout() {
this.test.fail('Email creation did not work.');
}
);
},
function timeout() {
this.test.fail('Email adress creation form has not been loaded');
});
Или, может быть, есть лучший способ проверить этот сценарий? Хотя, поскольку это функциональный тест, нам нужно сохранить все эти шаги в одном тесте.