私はレールを使ってRspecを学んでいます。私はおいしいアプリでdocsを見てきましたが、理由は言及されていません。rspec let(:variables)をsymbolで呼び出せないのはなぜですか?
RSpec.describe "mighty morphin power rangers" do
let(:power_rangers) { [:red, :blue, :pink, :yellow, :black]}
it "have 5 rangers" do
expect(power_rangers.size).to eql(5)
end
context "the second season" do
it "enter white ranger!" do
power_rangers << :white
expect(power_rangers.size).to eql(6)
expect(power_rangers).to eql([:red, :blue, :pink, :yellow, :black, :white])
end
end
end
私の質問は、私が初めてlet(:power_rangers)
を宣言したときに、それが(それゆえ:
)記号を使用しています、です。しかし、私がexpect(power_rangers.size).to eql(5)
のようなテストをすると、expect(:power_rangers.size).to eql(5)
を実行するとエラーが返されます。エラー:
1) mighty morphin power rangers have 5 rangers
Failure/Error: expect(:power_rangers.size).to eql(5)
expected: 5
got: 13
変数を最初にシンボルとして宣言した場合、いつでもシンボルとして呼び出す必要はありませんか? を使用したときに、:power_rangers
を使用して期待値/パスを返したとき、なぜ13になったのですか?次のことを宣言することで
これは意味があります。私は「13」がどこから来たのか疑問に思いました。 「rspecにメソッド 'power_rangers'を定義するように言う...」と言うと、メソッドを定義できますか?説明をくれてありがとう、それはすでにいくつかをクリアしました! – Iggy
メソッドを定義する 'rspec'の' let'メソッドの裏にあるメタプログラミングです。 – Dharam