1

私はrspecを使用しており、ユーザーの車のDELETEメソッドをテストしようとしています:

 describe "DELETE " do
    it "should delete a car" do
        #@car = Factory.create :car
        expect { click_link "Delete" }.to change{Car.count}.by(-1)
    end
end

実行すると、次のエラーが発生しました。

CarsController DELETE  should delete a car
 Failure/Error: expect { click_link "Delete" }.to change{Car.count}.by(-1)
 Capybara::ElementNotFound:
   no link with title, id or text 'Delete' found
 # (eval):2:in `click_link'
 # ./spec/controllers/car_controller_spec.rb:30:in `block (4 levels) in <top (required)>'
 # ./spec/controllers/car_controller_spec.rb:30:in `block (3 levels) in <top (required)>'

index.html.erb にこのリンクがあるため、理由がわかりません。

<td><%= link_to 'Delete', user_car_path(@user, car), :confirm => 'Are you sure?', :method => :delete %></td>

しかし、私のアプリでは動作します

4

1 に答える 1

2

レールの削除リクエストはフォームに変換されるため、要素が見つかりません。また、確認をトリガーする必要があります。

[削除] をクリックするには:

find('a', :text => 'Delete').click

確認を受け入れるには:

page.driver.browser.switch_to.alert.accept

使用できるようにしたい場合は、JavaScript を使用せずに destroy メソッドを実装する Railscast がありました。click_link

http://railscasts.com/episodes/77-destroy-without-javascript/

于 2012-08-02T20:33:54.843 に答える