ruby-on-rails-3 - rspec 测试一个嵌套的 if 函数

标签 ruby-on-rails-3 testing rspec

我是 rspec 测试的新手,需要一点帮助。

我正在为我的时间表测试一个 Controller ,我正在尝试测试这段代码。

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

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

最佳答案

您可以在 rspec 中使用 describe 语句和 before(: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

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

关于ruby-on-rails-3 - rspec 测试一个嵌套的 if 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7244508/

相关文章:

linux - 在开发模式下从 Rails 3 离线发送电子邮件?

c# - 如何从 .NET 风格的 TDD 迁移到 Ruby?

ruby-on-rails - Webmock 未通过查询响应 stub 请求

javascript - "NetworkError: 404 Not Found"- $.post() 与 jQuery

ruby-on-rails - Rails/ActiveRecord 与 mysql BIT 配合使用

angular - 类型错误 : providers[name][0] is not a function Angular 4. 0.1 npm 测试

android - 测试装备移动设备

ruby-on-rails - Rspec - stub 模块方法

ruby-on-rails - RSpec - 无法写入未知属性(枚举)

ruby - 我如何用密码保护我的/sidekiq 路由(即要求对 Sidekiq::Web 工具进行身份验证)?