casper.js の機能テストで少し問題があります。
最初は GET メソッドで、次に POST メソッドで、同じリソースを 2 回リクエストします。2 番目のリソース (POST) を待機しているときに、最初のリソースと一致し、「then」関数に直接移動します。
リソースを適切に識別できるように、「テスト」関数で 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]': 'test.bruce@im.com',
'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');
});
または、このシナリオをテストするためのより良い方法がありますか? ただし、これは機能テストであるため、これらすべてのステップを 1 つのテストに含める必要があります。