1

基本的な疑問があります。rspec ファイルに多くのコンテキストが含まれている場合:

describe Name do
context "number1" do
.......
.......
end
context "number 2" do
.......
.......
end
context "number 3" do
.......
.......
end

各コンテキストの関数を .rb ファイルにどのように記述すればよいですか? 彼らは同じクラスにいるべきですか、それとも異なるクラスにいるべきですか? これについての知識を深めるために読むことができる本はありますか?

4

1 に答える 1

11

rspec ファイルを定義するときに使用する構造 (rspec で行った読み取りに基づく) は、describes特定の関数を記述しcontext、状態の特定のコンテキストや関数を介したパスについて話すために使用するものです。

クラスの例:

class MyClass
    def self.my_class_method(bool)
        if bool == true
            return "Yes"
        else
            return "No"
        end
    end

    def my_instance_method
        today = Date.today
        if today.month == 2 and today.day == 14
            puts "Valentine's Day"
        else
            puts "Other"
        end
     end
end

ご覧のとおり、本当にばかげたランダムな機能を実行するクラス メソッドとインスタンス メソッドを定義しました。しかし要点は次のとおりです。クラス メソッドは引数に基づいて何か異なることを行い、インスタンス メソッドは外部要因に基づいて何か異なることを行います。これらすべてをテストする必要があり、これらは異なるコンテキストです。ただし、関数は rspec ファイルに記述します。

Rspec ファイル:

describe MyClass do
    describe ".my_class_method" do
        context "with a 'true' argument" do
            it "returns 'Yes'." do
                MyClass.my_class_method(true).should eq "Yes"
            end
        end

        context "with a 'false' argument" do
            it "returns 'No'." do
                MyClass.my_class_method(false).should eq "No"
            end
        end
    end

    describe "#my_instance_method" do
        context "on Feb 14" do
            it "returns 'Valentine's Day'." do
                Date.stub(:today) { Date.new(2012,2,14) }
                MyClass.new.my_instance_method.should eq "Valentine's Day"
            end
        end

        context "on a day that isn't Feb 14" do
            it "returns 'Other'." do
                Date.stub(:today) { Date.new(2012,2,15) }
                MyClass.new.my_instance_method.should eq "Other"
            end
        end
    end
end

したがって、describeis は、記述しているメソッドを示すためのものであり、クラス内のメソッドの名前と一致することがわかります。はcontext、メソッドを呼び出すことができるさまざまな条件、またはメソッドの動作に影響を与えるさまざまな状態を評価するために使用されます。

お役に立てれば!

于 2012-08-02T13:26:14.087 に答える