0

完全なエラー メッセージ:

1) RelationshipsController creating a relationship with Ajax should increment the     Relationship count
Failure/Error: xhr :post, :create, relationship: { followed_id: other_user.id }
ArgumentError: bad argument (expected URI object or URI string)
# ./spec/requests/relationships_controller_spec.rb:14:in `block (4 levels) in <top (required)>'
# ./spec/requests/relationships_controller_spec.rb:13:in `block (3 levels) in <top (required)>'

2) RelationshipsController creating a relationship with Ajax should respond with success
Failure/Error: xhr :post, :create, relationship: { followed_id: other_user.id }
ArgumentError: bad argument (expected URI object or URI string)
# ./spec/requests/relationships_controller_spec.rb:19:in `block (3 levels) in <top (required)>'

3) RelationshipsController destroying a relationship with Ajax should decrement the Relationship count
Failure/Error: xhr :delete, :destroy, id: relationship.id
ArgumentError: bad argument (expected URI object or URI string)
# ./spec/requests/relationships_controller_spec.rb:31:in `block (4 levels) in <top (required)>'
# ./spec/requests/relationships_controller_spec.rb:30:in `block (3 levels) in <top (required)>'

4) RelationshipsController destroying a relationship with Ajax should respond with success
Failure/Error: xhr :delete, :destroy, id: relationship.id
ArgumentError: bad argument (expected URI object or URI string)
# ./spec/requests/relationships_controller_spec.rb:36:in `block (3 levels) in <top (required)>'

コードのソースのための私の github

ブラウザで AJAX は正常に動作しますが、テストは赤です。:(

私はプログラミング、Rails、Stackowerflow の初心者です。この問題を解決するのを手伝ってください。:3

4

2 に答える 2

2

RailsTutorial(Rails 3.2を使用)の第11章の同じAjaxセクションに従って、まったく同じ問題が発生しました。ここで残念ながら xhr が RSpec と混在していたという点で、Michael de Silva は正しかったと思います。

とにかく、完全を期すために(チュートリアルはほぼ完了しています)、ここで何らかの方法で xhr を動作させることにしました。Mike Hartl のリスト 11.37 では、 http: //api.rubyonrails.org/classes/ActionDispatch/Integration/RequestHelpers.html#method-i-xhr のように、ActionDispatcher::Integration::RequestHelpers メソッド xhr を使用する必要があったと思います。

http://api.rubyonrails.org/classes/ActionController/TestCase/Behavior.html#method-i-xhrのように、ActionController::TestCase::Behavior メソッド xhr ではなく

そこで、アクション :create と :destroy への参照を名前付きルートに置き換え、リスト 11.37 のテスト例を緑色に変更しました。オリジナル

expect do
  xhr :post, :create, relationship: { followed_id: other_user.id }
end.to change(Relationship, :count).by(1)

となり、

expect do
  xhr :post, relationships_path, relationship: { followed_id: other_user.id }
end.to change(Relationship, :count).by(1)

そして、オリジナル

expect do
  xhr :delete, :destroy, id: relationship.id
end.to change(Relationship, :count).by(-1)

となり、

expect do
  xhr :delete, relationship_path(relationship.id), id: relationship.id
end.to change(Relationship, :count).by(-1)
于 2013-07-30T04:55:17.940 に答える
0

これが役立つかどうかを確認してください: RSpec test destroy メソッド (Rails Tutorial 3.2 Ch. 9, Ex. 10)

上記のリンクのさらに下も読みます。rspec と Rails が提供するAction*::TestCase. 代わりにこれを行う

カピバラを使用できますpage.execute_script(ただし、この例では JavaScript を有効にする必要があります:js => true) 。

于 2013-05-12T12:29:03.160 に答える