私はRspec、Capybara、およびCucumberを使用して自分のサイトの機能をテストしています。本質的に、私はファッションの電子商取引サイトを持っています。私はすべてのアイテムを表示するショップページを持っています。特定のアイテムをクリックすると、そのアイテムの詳細ページに移動し、セーターと言うことができます。このセーターでは、買い物客として、あなたが望むサイズと色を選択するオプションがあります。最後のオプションは、選択したサイズと色の数量です。しかし、買い物客が異なるサイズや色を選択した場合、AJAX呼び出しを呼び出して合計利用可能数量を更新するJSコードがあります。したがって、小さい青いセーターで始まり、サイズを中に変更すると、AJAXコールは利用可能な中程度の青いセーターを検索します。その後Rails Cucumberカピバラを使用したAJAXのテスト
# first create the items for the test db:
Given /^there are four total items and three unique item names$/ do
create(:product, size: 'M', color: 'Black')
create(:product, size: 'M', color: 'Black')
create(:product, size: 'S', color: 'Black')
create(:product, size: 'S', color: 'White')
create(:product, size: 'S', color: 'White', available: false)
create(:product, name: 'Alicia Dress', size: 'L', color: 'black', order: 3)
create(:product, name: 'Cleopatra Dress', size: 'L', color: 'blue', order: 2)
end
は、私は私のキュウリテスト(起動オプションが小さい注意を持っている:10利用可能であるのであれば、その量のための選択オプションは今、次の私は、この機能をテストするために、1から10まで行きますそして、のみ1の量を持っていますが、あなたはMにサイズオプションを変更するときに、2つのMの黒のコートがあるので、それは)2に行くべきか、黒:
Scenario: If a shopper selects a different size or color
Given the shopper is on the "shop" page
When the shopper clicks on "Master Coat"
And the shopper selects a size "M"
Then the total quantity should change to "2"
そして、私のテスト手順:
When /^the shopper selects a size "(.+)"$/ do |size|
find('.select-size').find(:option, size).click
end
Then /^the total quantity should change to "(.+)"$/ do |quantity|
expect(page).to have_css('option', :text => quantity)
end
私がそれらの仕事を知っているので、私はGivenとWhenのステップを省いたことに注意してください。私の主な問題は、「買い物客がサイズMを選択した後」で、AjAXコールは発射して数量を変更するはずですが、最後のステップでは数量は1のままで、2私が手動でテストするときに行います。私の推測では、AJAXは最後のテストステップの後に発射または発砲していないので、テストが結果をチェックする前に終了していないということです。
これを正しく設定していますか?もしそうなら、どうすればAJAXレスポンスのマッチャーテストを行うことができますか?私はいくつかのことを試みたが、うまくいかなかった。
使用しているウェブドライバは何ですか?それはセレンですか? – Shani
ウェブドライバは、セレンです。 – Darkisa