如何确定 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 控制器测试的主题? 的相关文章

随机推荐

  • 使用串口通过 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