web-dev-qa-db-ja.com

rspecでコンテキストを説明します。違いは?

Rspecコードをどのように整理するかについて少し読んだ。 「コンテキスト」はオブジェクトの状態により多く使用されるようです。あなたの言葉では、rspecコードで「記述」を使用する方法をどのように説明しますか?

これが私のmovie_spec.rbコードのスニペットです。

require_relative 'movie'

describe Movie do

    before do
        @initial_rank = 10
        @movie = Movie.new("goonies", @initial_rank)
    end


    it "has a capitalied title" do
        expect(@movie.title) == "Goonies"
    end


    it "has a string representation" do
        expect(@movie.to_s).to eq("Goonies has a rank of 10")
    end

    it "decreases rank by 1 when given a thumbs down" do
        @movie.thumbs_down
        expect(@movie.rank).to eq(@initial_rank - 1)
    end

    it "increases rank by 1 when given a thumbs up" do
        @movie.thumbs_up
        expect(@movie.rank).to eq(@initial_rank + 1)
    end

    context "created with a default rank" do
        before do
            @movie = Movie.new("goonies")
        end

        it "has a rank of 0" do
            expect(@movie.rank).to eq(5)
        end
    end
19
Jwan622

describecontextの間に大きな違いはありません。違いは読みやすさにあります。条件に基づいて仕様を分離したい場合は、contextを使用する傾向があります。私はdescribeを使用して、テストされるメソッドまたはテストされる動作を分離しています。

最新のRSpecで変更された主なものの1つは、 "context"が最上位のメソッドとして使用できなくなった であることです。

19
Leo Correa