加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 使用rspec测试rails控制器

发布时间:2020-12-17 03:51:17 所属栏目:百科 来源:网络整理
导读:我是rails的新手,我正在尝试使用rspec测试控制器.我的第一个测试是在调用show动作时,它应该通过url查找Category. 问题是当我添加存根代码时,我收到以下错误: 未定义的方法`find’for# 我的测试看起来像这样: require 'spec_helper'describe CategoriesCont
我是rails的新手,我正在尝试使用rspec测试控制器.我的第一个测试是在调用show动作时,它应该通过url查找Category.

问题是当我添加存根代码时,我收到以下错误:

未定义的方法`find’for#

我的测试看起来像这样:

require 'spec_helper'

describe CategoriesController do
    describe "GET /category-name/" do
        before(:each) do
            @category = mock_model(Category)
            Category.stub!(:find).with(:first,:conditions => ["url = :url",{:url => "category-name"}]).and_return(@category)
        end

        it "should find the category by url" do
            controller.show
            Category.should_receive(:find).with(:first,{:url => "category-name"}]).and_return(@category)
        end
    end
end

解决方法

您对请求的调用应该在任何should_receive之后.这是一件紧张的事情.所以它有点像这样,“类别应该收到一些东西,当这种情况发生时”. “发生这种情况”是指请求.

it "should find the category by url" do
  Category.should_receive(:find).with... 
  get "show",{ your params,if you're sending some in }
end

此外,您希望至少在此特定测试中使用调用控制器方法本身的请求方式.

所以

post   "action_name"
get    "action_name"
update "action_name"
delete "action_name"

代替

controller.action_name

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读