3

ルートをテストしてみましたが、rspec-rails のドキュメントから例をコピーしました。

describe "routing to profiles" do
  it "routes /profile/:username to profile#show for username" do
    expect(:get => "/profiles/jsmith").to route_to(
      :controller => "profiles",
      :action => "show",
      :username => "jsmith"
    )
  end
end

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

Failures:

  1) routing to profiles routes /profile/:username to profile#show for username
     Failure/Error: expect(:get => "/profiles/jsmith").to route_to(
     ArgumentError:
       wrong number of arguments (1 for 0)
     # ./spec/routing/test_spec.rb:11:in `block (2 levels) in <top (required)>'

Finished in 0.001 seconds
1 example, 1 failure

ここで何がうまくいかないのですか?

助けてくれてありがとう。

4

3 に答える 3

2

expectブロックを取ります。これは、中かっこを使用することを意味します。

expect{ :get => "/profiles/jsmith" }.to route_to(

参考:RSpec Expectations 2.0

とにかく期待する必要はないと思います。直接アクセスできない RSpec コントローラ アクションのテストからのコード

describe "routing" do
  it "routes /auth/:provider/callback" do
    { :post => "/auth/twitter/callback" }.should route_to(
      :controller => "authentications",
      :action => "create",
      :provider => "twitter")
  end
end
于 2012-11-03T20:20:57.193 に答える
0

あなたのitブロックリストは/profile/:usernameあなたの例のリスト/profiles/jsmithです(プロファイルの複数形に注意してください)。私はそれがあるべきだと思います/profile/jsmith

于 2012-11-03T20:25:02.943 に答える
0

get コマンドの構文は次のとおりですget your_action, params => your_paramsget :show, username => "user"B Sevenが提案したように、中括弧と組み合わせて使用​​してみます. また、spec を などの記述ブロックでラップするdescribe MyController doか、コントローラーの名前をパラメーターとして渡す必要がある場合もあります。

于 2012-11-04T01:44:58.820 に答える