rspec测试嵌套的if函数

时间:2011-08-30 14:04:58

标签: ruby-on-rails-3 testing rspec

IM非常新的测试,需要一些帮助。

我正在为我的时间表测试一个控制器,并试图测试这段代码。

if params[:user_id] == nil
      if current_user == nil
        redirect_to new_user_session_path
      else
        @user_id = current_user.id
      end
    else
      @user_id = params[:user_id]
    end

我不确定它是否值得测试,但似乎缺少初学者的教程,所以我不知道。 提前谢谢

1 个答案:

答案 0 :(得分:2)

你可以在rspec中使用describe语句和之前(:each)来设置每个场景并测试它

describe "test the controller" do

    before(:each) do
        @user = Factory(:user)
    end

    describe "for non signed in users" do

        it "should redirect to sign in page" do
            get :action
            response.should redirect_to(new_user_session_path)
        end

    end

    describe "for signed in users" do

        before(:each) do
            sign_in(@user)
        end

        it "should be successful" do
            get :action
            response.should be_success
        end

    end

end

只需使用不同的describe语句并使用before(:each)设置每个测试,你应该没问题。