0

RSpec テスト仕様に基づいて、いくつかの有効な HTML タグを返すメソッドを作成しようとしています。これは RSpec です:

describe "link_to" do
  it "should return a valid link for Yahoo" do
    link_to("Yahoo", "http://www.yahoo.com").should eq("<a href='http://www.yaho.com'>Yahoo</a>")
 end
   it "should return a valid link for Google" do
     link_to("Google", "http://www.google.com").should eq("<a href='http://www.google.com'>Google</a>")
  end
end

これは私が思いついたものです:

def link_to(address1, address2, text1, text2)
  "<a href=#{address1}>#{text1}</a>"
  "<a href=#{address2}>#{text2}</a>"
end

p link_to("http://www.yahoo.com", "'http://www.google.com'", "Yahoo", "Google")

そして、私はこのエラーを受け取ります:

ArgumentError

引数の数が間違っています (4 に対して 2)

4

3 に答える 3

3

エラーは明らかです。4つの引数でメソッドを定義します

link_to(address1, address2, text1, text2)

しかし、それを 2 で呼び出します:

link_to("Yahoo", "http://www.yahoo.com")
于 2013-08-27T14:58:16.780 に答える
2

link_toRSpecでは 2 つの引数で呼び出していますが、 4 つかかります。

link_to("Google", "http://www.google.com")
           ^1               ^2             ^3?,  ^4?
于 2013-08-27T14:57:00.603 に答える
0

仕様によると、link_toメソッドは 2 つの引数を取ります。

link_to("Yahoo", "http://www.yahoo.com") # <- 2 arguments

最初の引数はリンク テキスト ( "Yahoo")、2 番目の引数はアドレス ( "http://www.yahoo.com") です。

あなたのメソッドは現在4つの引数を取ります(それがあなたが得る理由ですArgumentError):

def link_to(address1, address2, text1, text2)
  # ...
end

代わりに、メソッド シグネチャは次のようになります (引数の順序に注意してください。リンク テキストが最初になります)。

def link_to(text, address)
  # ...
end

これを修正した後、仕様は次のように失敗します。

expected: "<a href='http://www.yaho.com'>Yahoo</a>"
     got: nil

これ以上ArgumentError、それは素晴らしいです。実装を追加しましょう (一度に 2 行を返すべきではないため、1 行だけです)。

def link_to(text, address)
  "<a href=#{address}>#{text}</a>"
end

まだ失敗していますが、整理できると思います:-)

expected: "<a href='http://www.yaho.com'>Yahoo</a>"
     got: "<a href=http://www.yahoo.com>Yahoo</a>"
于 2013-08-27T15:43:42.530 に答える