如何添加将调用辅助方法的摩卡期望?

2023-12-13

我正在将一个方法从控制器转移到助手中;现在将从视图中调用该方法。以前,在我的控制器中我有

def show
  @things = gather_things
end

在我的功能测试中我有

test "show assigns things" do
  get :show
  assert_equal GATHERED_THINGS, assigns(:things)
end

now, gather_things存在于 helper 中并从视图中调用。我对助手进行了单元测试,以确保它返回正确的值,但我希望我的功能测试断言它被调用。我试过了

test "show calls gather_things" do
  @controller.expects(:gather_things)
  get :show
end

但这行不通。我应该打电话什么expects(:gather_things) on?


如果您已将代码从控制器移至视图中,那么它实际上已移出功能测试的范围。

我不知道正确的类来满足您的期望...但您可能可以通过在“gather_things”方法中执行以下操作来弄清楚:logger.error self.class.name- 它会为您将类名吐出到日志中。然后你就可以把你的期望寄托在这门课上了。

现在我们来到了问题的关键......您是否应该将该代码移至视图中?

我的意见是你不应该。设置模型对象的集合正是控制器代码中应该执行的操作 - 如果您稍后决定要在 CSV 文件中或作为 RESTful xml API 显示相同的数据,该怎么办? - 无论您使用什么视图,您仍然需要实例化同一组对象。所以我的最终建议是将该方法再次移回控制器中它所属的位置。

编辑:以下建议现已过时,与该用户无关,但可能对其他人有用

如果您正在使用 rspec 进行测试 - 它在功能测试期间实际上并不渲染视图(除非您专门将其打开),因此任何称为表单视图的代码都不会执行。

如果您想测试视图是否调用某些内容,您需要将其打开,或者在视图测试中对其进行测试。

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

如何添加将调用辅助方法的摩卡期望? 的相关文章

  • 没有路线匹配 [GET]“user/sign_out”rails 5

    我目前使用 Devise 遇到此错误 并且我已经尝试了其他问题中的多种方法 以便以零运气解决它 首先建议我确保将该方法添加为删除 No luck 然后我被建议我需要在我的布局标题中包含以下内容 or this 还是 运气不好 最后 建议我更
  • Mocha 测试对原生 ES6 模块的“esm”支持

    有一个很棒的帖子 使用 Mocha 和 esm 测试原生 ES 模块 https web archive org web 20220318155753 https alxgbsn co uk 2019 02 22 testing nativ
  • URI::InvalidURIError(错误的 URI(不是 URI?):nil)Active Storage service_url

    配置信息 rails version 6 0 ruby version 2 7 0 gem image processing gt 1 2 存储 yml local service Disk root 开发 rb config active
  • Ruby on Rails 4 不显示 content_tag :i

    为什么除了 content tag i 之外的所有 content tags 都显示 def sign full tag group obj name input type text size 12 popover true content
  • 如何使用哈希数组填充 select_tag?

    在 Rails 3 2 应用程序中 我尝试添加一个选择字段 该字段从外部 API 调用获取数据 该数据作为哈希数组返回 name gt NameA id gt 001 name gt NameB id gt 002 我如何使用这些数据来构造
  • Rails 中是否可以跨多个数据库进行内部联接?

    我很难使用has many through关联 其中一些表位于单独的数据库中 database one class Input lt ApplicationRecord belongs to user Works great end dat
  • Rails:使最终用户可以编辑视图?

    无论如何 我可以使最终用户可以编辑 Rails 视图中的内容吗 这样他们就可以在我允许的页面上进行简单的文本更改 而无需我自己编辑 HAML 文件 想法 澄清 我了解 CMS 系统 但我认为这并不完全是我想要的 我想保持对视图的编程控制 但
  • Ruby on Rails 中的枚举

    我是一名 C 程序员 我正在研究 ruby on Rails 但我可能在心态或其他方面遇到了一些麻烦 我有一个投票对象 该对象可以是赞成 中立或反对 我通常会让投票对象有一个像这样的字段 private VoteEnum voteEnum
  • jQuery 自动完成滚动问题

    我在用着Rails3 jquery 自动完成 https github com crowdint rails3 jquery autocomplete在我的应用程序中 我遇到了以下问题 如果您在输入字段中输入某些内容以便显示自动完成数据并在
  • 在自定义条件下清理 SQL

    我需要创建一个简单的搜索 但我无法使用 Sphinx 这是我写的 keywords input split s queries keywords each do keyword queries lt lt sanitize sql for
  • Rails 是否为 rake 任务运行初始化程序?

    当我运行 rake 任务时 是否执行配置 初始化程序中的脚本 如果你的 rake 任务取决于 environment 即 您像这样声明您的任务 task my task gt environment do end
  • 在关联声明中使用“self”(:has_many,:has_one)

    我需要在 has many 声明中引用模型的自身 我有一门课 我们称之为 Foo Foo has many 酒吧 Foo 有一个名为 randomize 的布尔属性 它确定 has many 关系中 Bar 的顺序 如果 randomize
  • 在所有延迟的作业之前挂钩

    是否可以在所有delayed job任务之前运行一个方法 基本上 我们试图确保每台运行delayed job的服务器都有我们代码的最新实例 因此我们希望运行一个方法来在每个作业运行之前检查这一点 我们已经有了 check 方法并在其他地方使
  • 表单元素的自定义 HTML 错误包装器

    我想找到一种方法来自定义默认错误html div class field with errors div 参加我自己的课程 div class clearfix error div
  • 初始化会破坏rails中的布局设置吗?

    在其中一个控制器中 我需要特定的布局 我添加了layout一开始 效果很好 但如果我添加一个initialize某些基于控制器的变量的函数 Rails 似乎只是忽略了layout命令 有人有同样的问题吗 我该如何修复它 class Admi
  • 在 git 中管理 schema.rb 的首选方法是什么?

    我不想添加schema rb to gitignore 因为我希望能够从该文件加载新的数据库架构 然而 保持检查状态会导致各种虚假冲突 而这些冲突很容易通过新的解决方案解决 db migrate reset 基本上我想要一种方法 将 sch
  • S3 的 Rails 回形针默认图像

    我尝试在应用程序中使用default url 但我使用S3 存储图像 我不确定我需要在那里输入什么 URL 或者我是否必须创建一个假图像才能将所有内容放在那里 由于我的图像总是通过 S3 渲染 所以我不知道如果我只是在公共文件夹中放入一些默
  • Rails 4 与 MailCatcher 和 Devise gems

    我有一个带有 gem Devise 的应用程序 我需要通过电子邮件确认注册 在配置 环境 rb我添加了这个 ActionMailer Base delivery method smtp ActionMailer Base smtp sett
  • 从轨道控制器返回

    这是一个初学者 Rails 问题 我这样做之后 format xml head ok 如何从控制器端点返回而不显示视图 如果我此时放弃函数的末尾 我会得到我所期望的结果 但如果我调用 返回 我最终会进入视图 或者在我的情况下会出现缺少的视图
  • Rails & Devise:如何在没有布局的情况下呈现登录页面?

    我知道这可能是一个简单的问题 但我仍在试图弄清楚Devise https github com plataformatec devise out 我想要render layout gt false在我的登录页面上 我怎样才能做到这一点Dev

随机推荐

  • 如何控制IE中onbeforeunload的动作?

    我有一个问题onbeforeunload最近 当用户尝试关闭 IE 浏览器时 我需要弹出一个投票页面 我通过使用以下方法做到了 以及主要结构makevote 在javascript中如下 function makevote comet di
  • 包含点 (0,0) 的三角形数量

    首先 归功于 Topcoder 因为这个问题被用在他们的一个 SRM 中 但他们没有对此进行编辑 在这个问题中 我得到了 n 个点 其中 n 介于 1 到 1000 之间 对于每三个点 显然有一个三角形将它们连接起来 问题是 这些三角形中有
  • 当用户在 Excel 中向右滚动时移动形状(VBA)

    I have an excel workbook with two shapes on Sheet1 like below 我的要求是当用户向工作表右侧导航时 即向 headers24 header25 等导航时 我希望工作表上的两个形状随
  • 为什么空引用打印为“null”

    在 println 中 这里 o toString 抛出 NPE 但 o1 不会 为什么 public class RefTest public static void main String args Object o null Obje
  • Getter 和 Setter 不工作?

    我现在有两个类 RemindersDAO java 和 ViewLocalReminders java 我正在尝试访问 ViewLocalReminders java 中的变量 并尝试从 RemindersDAO java 中调用它 我通过
  • RWD:在移动设备中显示桌面版本,缩小,无水平滚动

    也许我的问题有点奇怪 但我的客户希望在一段时间内从网站上删除响应能力 并在移动设备中查看桌面版本 首先 我删除了响应式元标记 但在页面中获得水平滚动 我想要的是在 iPhone 上看到我的网站 就像在桌面上看到的一样 没有任何滚动或缩放 我
  • 我是否应该将 IBActions 放入头文件中?

    鉴于 Xcode 4 6 3 使用 iOS SDK 6 1 声明方法签名是否有区别IBAction是否在头文件中 如果不将方法声明放在头文件中 应用程序仍然能够毫无问题地编译和运行 然而 该方法在故事板中看不到 未在头文件中声明方法是否存在
  • 在VB.NET中使用RSA加密进行解密

    我使用以下命令在 Linux 计算机的 cmd 行中使用 openssl 创建了公钥和私钥 openssl genrsa out rsa 1024 priv pem 1024 openssl rsa pubout in rsa 1024 p
  • 访问名称来自用户输入的局部变量

    我需要使用访问字符串raw input list1 one Two three list2 1 2 3 while True ip raw input enter list for i in ip print i break 当 list1
  • UWP - 防止 NavigationViewItemHeader 被剪切

    I am writing a UWP app that has a NavigationView containing NavigationViewItemHeaders
  • 再次 setTimeout 与 setInterval

    所以我知道之间存在差异setTimeout and setInterval 但请考虑这两个代码示例 function myFunction setTimeout myFunction 100 doSomething setTimeout m
  • 模块解析失败:意外的令牌 ionic 3

    升级到最新的 ionic 和 ionic Angular 模块后 出现此错误 这是升级后我的 Package json 文件 这是升级后我的 Package json 文件 运行时错误 Module parse failed Unexpec
  • 删除行的有效方法(多个条件)VBA

    我有一张表 其中 Col A 中有一个字符串 A Col B 由字符串 B 组成 我想在 A 列中保留带有 Begr ndung 一词的行 在 B 列中保留带有 Nein 一词的行 我正在使用从这些来源找到的以下代码如果单元格不包含 则删除
  • 在后台运行 R

    嗨 这是一个我不知道如何提出的问题 我正在从远程服务器运行 R 我对远程服务器的访问是通过 ssh username 等 访问后 我会看到一个命令提示符 我可以调用 R 并且我很乐意在 R 上工作 问题1 我有一个大型网络 100k 个节点
  • 如何从 stdlib 编写 qsort 的比较函数?

    我有一个结构 struct pkt double x double y double alfa double r kw typedef struct pkt pkt 这些结构的表格 pkt tab pkt tab pkt malloc il
  • Firestore增量浮点问题

    请注意 我知道关于这个问题还有一些其他问题 但没有真正的答案 因此 自从实现增量字段值以来发生的情况是 当增加浮点数时 大多数时候您会得到十几个小数而不是实际数字 incrementing 0 with 0 1 11 times retur
  • 如何使用 vite + React 项目添加自动前缀

    嗨 我使用创建了反应应用程序npm create vite我尝试整合autoprefixer但它不起作用 vite config js import defineConfig from vite import react from vite
  • Chrome扩展程序跨域请求

    我知道这已经在这里讨论过很多次了 我已经阅读了其中的大部分主题 但我似乎无法让我的脚本运行 问题是我正在尝试使用 bitly api 来缩短 google chrome 扩展中的 url 我将用户登录名和 apiKey 保存在本地存储中 在
  • 部署 Azure 应用服务时出错:ERROR_COULD_NOT_CONNECT_TO_REMOTESVC

    我在通过 Azure DevOps 部署应用程序服务时遇到以下错误 我试图搜索这个问题 但找不到根本原因 Error 2021 03 15T06 01 27 7479723Z error Error Error Code ERROR COU
  • 如何添加将调用辅助方法的摩卡期望?

    我正在将一个方法从控制器转移到助手中 现在将从视图中调用该方法 以前 在我的控制器中我有 def show things gather things end 在我的功能测试中我有 test show assigns things do ge