如何确定 rspec 控制器测试的主题?

2024-03-28

所以除了好奇之外,我没有什么充分的理由需要知道这一点——最好的理由——但我不确定这里发生了什么。

背景:
我正在研究 RSpec 书并更新示例。

第 24 章 - Rails 控制器有一个消息控制器的测试。

## spec/controllers/messages_controller_spec.rb ##

require 'spec_helper'

describe MessagesController do
  describe "POST create" do
    let(:message) { mock_model(Message).as_null_object }

    before do
      Message.stub(:new).and_return(message)
    end

  # Then a bunch of Tests...

    context "when the message fails to save" do
      before do
        message.stub(:save).and_return(false)
        post :create
      end

      it "assigns @message" do
        assigns[:message].should eq(message)
      end

      it "renders the new template" do
        response.should render_template("new")
      end
    end
  end
end

这与消息控制器一起使用:

## app/controllers/messages_controller.rb ##

class MessagesController < ApplicationController
  def create
    @message = Message.new(params[:message])

    if @message.save
      flash[:notice] = "The message was saved successfully"
      redirect_to action: "index"
    else
      render "new"
    end
  end
end



当我运行测试时:

测试通过response.

it "renders the new template" do
  response.should render_template("new")
end

测试也通过了subject.

it "renders the new template" do
  subject.should render_template("new")
end

测试也通过了page

it "renders the new template" do
  page.should render_template("new")
end

测试也通过了NOTHING

it "renders the new template" do
 should render_template("new")
end

如果它可以帮助任何人弄清楚这一点,config/routes.rb刚刚有 resources :messages

为什么所有这些测试都能通过?我实际上在测试什么? “页面”、“主题”和“ ”只是响应的同义词吗? 只要我的测试通过就重要吗?


默认情况下,主题将引用该类,即 MessagesController。

在最后一个测试示例中未定义主题,将隐式将主题设置为 MessagesController。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何确定 rspec 控制器测试的主题? 的相关文章

  • 如何跳过 Devise SessionsController 的 before_filter ?

    我有一个before filter in my ApplicationController 也就是说 对于我的项目中的每个控制器 我怎么能够skip before filter对于设计的SessionsController创造行动 这是我的
  • 如何检查水豚中的复选框?

    我正在使用 Rspec 和水豚 我怎样才能写一个步骤来检查checkbox 我试过了check按价值但它找不到我的checkbox 我不知道该怎么做 因为我实际上有相同的 ID 但值不同 这是代码
  • Ruby on Rails 最酷的功能是什么,为什么选择它? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在我问这个问题之前 我浏览了 SO 上 Ruby on Rails 的搜索结果 找不到太多 但以下 在此页面上找到 https stackove
  • 是否可以让 Capistrano 通过反向 SSH 隧道进行结帐?

    我正在开发一个驻留在公共主机上的应用程序 但我必须将其源代码保存在公司防火墙后面的 Git 存储库中 我越来越very厌倦了通过缓慢的部署scp 复制整个存储库并在每次部署时通过 SSH 传送 并且希望远程主机只需执行git pull更新
  • Capybara 的 has_selector 有哪些选项?

    我在 RSpec 中遇到此错误 有没有任何文档have selector解释了选项哈希中的每个键以及它到底有什么作用 invalid keys content should be one of text visible between co
  • nodejs mocha suite 未定义错误

    我正在尝试使用摩卡运行一些测试 但似乎无法克服这个错误 E tdd nodejs cart gt mocha cart test js node js 201 throw e process nextTick error or err Re
  • 从其父应用程序运行 Rails 引擎的规范

    我有用于父应用程序的 rspec 套件 以及附加的一些引擎规范 我想要的是用一个命令来运行它们 有没有办法将我的 gems 路径包含到 rspec 加载路径中 或者我应该为此编写 rake 任务 我认为这是一个有趣的问题 但我的观点是 Ra
  • 如何创建与 ActiveResource 对象的 ActiveRecord 关系?

    假设我正在为一家已经拥有 People 应用程序的出版公司编写一个图书馆应用程序 所以在我的图书馆应用程序中我有 class Person lt ActiveResource Base self site http api people m
  • 带有附加参数的redirect_to

    我是一个菜鸟 redirect to users url notice Succeed p p 然后我添加一个message它失败了 redirect to users url notice Succeed message test p p
  • RSpec 请求规范发布一个空数组

    我目前正在 Rails 中开发 API 端点 如果我需要的数据无效 我想确保端点响应具有正确的错误状态 我需要一个 id 数组 无效值之一是空数组 Valid vendor district ids 2 4 5 6 Invalid vend
  • 自定义通用 Rails 错误消息

    我们的 Rails 应用程序被设计为链接到多个客户端数据库的单个代码库 根据子域 应用程序确定要连接到哪个数据库 我们使用液体模板为每个客户定制演示文稿 我们无法为每个客户定制通用的 我们很抱歉 出了点问题 消息 谁能推荐一种方法让我们能够
  • Rails 4 的 mobile_fu

    我正在尝试将我的应用程序从 Rails 3 2 13 切换到 Rails 4 在此过程中 我遇到了一个主要障碍 我使用 gem mobile fu 来确定用户是否来自移动设备 该 gem 需要 Railties 3 2 13 但 Rails
  • Rails 5:验证复选框的接受

    我有一个带有一些嵌套字段的注册表单 在该表单中我添加了一个服务条款的复选框 我正在尝试验证复选框何时被选中 如果没有 则返回错误 validates acceptance of agreement allow nil gt true acc
  • Capybara-webkit 无法处理与 bootstrap glyphicon 的链接

    我有一个链接 link to q span class glyphicon glyphicon trash span html safe feed item data confirm Are you sure toggle tooltip
  • 如何在两个模型之间建立两个 has_many/belongs_to 关系?

    我有一个Project模型 以及一个Contact模型 项目模型有一个所有者和一个客户 两者都是Contacts 显然我遇到了一些不明确的事情 因为如果我有联系人并询问其项目 Rails 将不知道我询问的是它的项目是客户还是所有者 到目前为
  • Rails 4 和 Turbolinks - 元标签未更改

    我有一个启用了 Turbo Links 的 Rails 4 应用程序 但在更改页面时无法刷新元标记 不是完全刷新 我读到元标记需要包含在加载涡轮链接的 JavaScript 之前 但它没有效果 完全刷新可以完成这项工作 但不幸的是这不是我所
  • Rails - 用于集合集的单选按钮

    我有以下输出选择框 br 替代输出单选按钮的 Rails 方法是什么 对于单选按钮 您必须自行迭代并输出每个单选按钮及其标签 事实上这真的很容易
  • 有没有办法使用 Rspec/Capybara/Selenium 将 javascript console.errors 打印到终端?

    当我运行 rspec 时 是否可以让 capybara selenium 向 rspec 报告任何 javascript console errors 和其他异常 我有一大堆测试失败 但当我手动测试它时 我的应用程序正在运行 如果不知道仅在
  • 在rails生成脚手架中跳过JSON格式

    当您使用类似命令生成 Rails 脚手架时rails g scaffold Thing有什么办法可以避免变得烦人吗 respond to do format format html index html erb format json re
  • 升级到 Rails 6 时是否有一种编程方法可以检测 Zeitwerk::NameError?

    我目前正在将旧的 Rails 应用程序迁移到 Rails 6 好像项目中有些文件和里面定义的类不一致 运行应用程序测试时我没有看到此错误 但部署后我收到如下错误 Zeitwerk NameError expected file app my

随机推荐

  • 使用串口通过 Arduino 将多个值发送到 Raspberry

    我有一个关于 Arduino 和 Raspberry Pi 之间串行通信的问题 事实上 我想使用 Arduino 将 2 个变量发送到 Raspberry Pi 并以不同的方式使用它们 这是我的 Arduino 草图 int one 1 i
  • 格式化 HDFS 时出现 UnknownHostException

    我已经使用以下命令在伪分布式模式下在 CentOS 6 3 64 位上安装了 CDH4指示 https ccp cloudera com display CDH4DOC Installing CDH4 on a Single Linux N
  • 如何使用 Python 在网格中创建 10 个随机 x、y 坐标

    我需要创建一个 8x8 网格 并将 10 个硬币分布在网格上的随机位置 我面临的问题是 randint 函数有时会生成相同的随机坐标 因此只生成 9 或 8 个硬币并放置在网格上 我怎样才能确保这种情况不会发生 干杯 这是我到目前为止的代码
  • 在 SpannableStringBuilder 中对齐位图

    如何将位图与 SpannableString 中的文本对齐 SpannableStringBuilder ssb new SpannableStringBuilder arr messages get position String msg
  • CloudFront 分配未显示为 Route53 别名目标

    我正在尝试添加指向我的 Cloudfront 分发的路线 53 记录集 但是 当我在路由 53 中选择 创建记录集 并单击后续面板中的别名目标时 未列出云前端分布 我得到的只是 没有可用的目标 我的发行版已创建并已启用 并且正在运行 我已在
  • ChromeDriver 2.33 的 driver.manage().window().maximize() 问题

    ChromeDriver 2 33 的发行说明表示 修复了导致调整大小 定位窗口命令在 Chrome 62 上失败的错误 但是当我使用 Chrome 62 浏览器时这似乎仍然是一个问题 使用 chrome 驱动程序最大化 chrome 窗口
  • 如何在 PHP 中设置 $PATH?

    我目前正在开发自己的小项目 但有一个小问题 我想将 PATH 环境变量设置为 bin 这样当我使用exec 和类似的功能 它只会搜索该目录中的二进制文件 除非我明确告诉它 我已经尝试过了putenv 除非我启用了安全模式 否则它将无法工作
  • Elasticsearch - 如果术语出现频率越高,得分越高

    我有 2 个文档 正在搜索关键字 Twitter 假设两个文档都是带有 标签 字段的博客文章 文档 A 在 标签 字段中只有 1 个术语 它是 Twitter 文档 B 在 标签 字段中有 100 个术语 但其中 3 个是 Twitter
  • Erlang 代码的持续集成服务器

    您使用什么类型的敏捷工具进行 Erlang 开发 什么持续集成 http en wikipedia org wiki Continuous integration您使用 CI 服务器来构建 Erlang 代码吗 我得到的唯一参考来自 Quo
  • Maven 中央存储库的官方镜像有哪些?

    有谁知道是否有已知 和工作的 Maven 中央存储库 http repo1 maven org maven2 镜像的列表 如果没有 当中央存储库关闭时您使用什么镜像 这是取自 rvxnet 的答案 以及为什么仅链接答案不可取的示例 我从20
  • Tomcat 的接受计数

    我对Tomcat有以下问题acceptCount 它说 当所有传入连接请求的最大队列长度 可能的请求处理线程正在使用中 收到的任何请求 当队列已满时将被拒绝 默认值为 10 我不确定这是如何运作的 我的意思是我知道有一个单独的 TCP 队列
  • QScreenRayCaster 未找到实体。我做错了什么?

    Qt3D 中新 QScreenRayCaster 的描述看起来正是我想要使用的 但我无法让它为我工作 我想在初始化中我需要做一些事情 但我在网上找不到任何示例来为我指明正确的方向 我编写了一个非常简单的程序来测试该功能 它在窗口的中心绘制一
  • Spring Security 将 URL 参数传递给身份验证提供程序

    有没有办法将 URL 参数传递给 Spring Security 3 中的身份验证提供程序 我们的登录页面需要接收电子邮件令牌作为参数 身份验证系统在设置用户状态时需要了解该参数 具体来说 它将允许具有正确令牌的用户登录 否则该用户将无法登
  • Pandas 根据拆分另一列添加新列

    我有一个如下所示的 pandas 数据框 A B US 65 AMAZON 2016 US 65 EBAY 2016 我的目标是看起来像这样 A B country code com US 65 AMAZON 2016 US 65 AMAZ
  • PE 文件中的 OSMajor 和 OSMinor 版本号

    最近我偶然发现了一个奇怪的现象 我正在为 PE 文件构建一个转储程序 很好地阅读了节标题和 可选 节标题 现在 当我到达 OS Major 和 OS Minor 字段时 我注意到一个奇怪的值 WORD OS VERSION major 0x
  • 我应该在 URL 中使用重音字符吗?

    当用英语以外的语言创建网页内容时 搜索引擎优化和用户友好 URL 的问题就会出现 我想知道在 URL 中使用去重音字母是否是最佳实践 冒着某些单词在有或没有某些重音的情况下具有完全不同含义的风险 或者最好坚持使用非英语字符在不太高级的环境
  • CCAvenue:“解密应用程序请求时出错!”

    我正在尝试将 CCAvenue 支付网关集成到我用 swift 4 开发的 iOS 应用程序中 我正进入 状态 错误 解密应用程序请求时出现问题 我已检查以下网址给出的答案 https stackoverflow com a 3732712
  • codegen 和标量结构参数

    Codegen 命令如下 codegen config dll ep1 args single 0 ep2 args 0 0 对于这样的函数来说很容易 function y ep1 u codegen y u function y ep2
  • Python基线校正库

    我目前正在处理一些拉曼光谱数据 并且正在尝试纠正由花期偏差引起的数据 看看下面的图表 我已经非常接近实现我想要的了 正如您所看到的 我试图在所有数据中拟合多项式 而我实际上应该在局部最小值处拟合多项式 理想情况下 我想要一个多项式拟合 当从
  • 如何确定 rspec 控制器测试的主题?

    所以除了好奇之外 我没有什么充分的理由需要知道这一点 最好的理由 但我不确定这里发生了什么 背景 我正在研究 RSpec 书并更新示例 第 24 章 Rails 控制器有一个消息控制器的测试 spec controllers message