在Rspec中测试控制器的新动作

时间:2016-12-09 21:55:16

标签: ruby-on-rails ruby testing rspec

我试图用Rspec测试我的控制器的新肌动蛋白,但收到以下错误:

Failure/Error: expect(assigns(:category)).to be_a_new(Category)
       expected nil to be a new Category(id: integer, title: string, image_url: string, description: string, created_at: datetime, updated_at: datetime)

以下是测试的代码:

describe "GET #new" do
    it "assigns a new category as @category" do
      get :new, params: { }, session: valid_session
      expect(assigns(:category)).to be_a_new(Category)
    end
  end

分类控制器新动作:

def new
    @category = Category.new
  end

使用get with new action打开一个可以创建新类别的表单。

如果有人能指出我正确的方向,那就太好了。

感谢。

1 个答案:

答案 0 :(得分:0)

尝试这样的事情:

describe "GET #new" do
    before(:each) do
      session[:user_id] = valid_session.id #or something like
      get :new
    end

    it "should be success" do
      expect(assigns(:category)).to_not eq nil
      expect(assigns(:category)).to be_a_new(Category)
    end
end

这样你就可以在get:new。

之前设置会话