ruby-on-rails - 如果您不知道所有 WITH 值,如何使用 Rspec any_instance_of

标签 ruby-on-rails testing rspec

我正在我的测试中创建一条新记录...在创建记录期间,应用程序调用另一个类来通知用户有关记录的创建...

一个人为的例子可能是

 user = User.make!
 expect_any_instance_of(Notifier).to receive(:tell_user).with(user.id, new_message_id)
 Message.create(author: User.make!, recepient: user, message: 'this is a test')

现在显然我不知道将要创建的消息的 id。
所以我想知道是否有人知道我将如何构造 with 部分期望不关心第二个参数中的值,但关心第一个参数中的值。

感谢您的帮助。

最佳答案

我认为您正在寻找的是 kind_of 方法

user = User.make!
expect_any_instance_of(Notifier).to receive(:tell_user).with(user.id, kind_of(Numeric))
Message.create(author: User.make!, recepient: user, message: 'this is a test')

如果你想更具体一些,你也可以使用instance_of(Fixnum)

关于ruby-on-rails - 如果您不知道所有 WITH 值,如何使用 Rspec any_instance_of,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27007994/

相关文章:

ruby-on-rails - 在 Elastic Beanstalk 上设置 delay_job 时如何修复 'require' 错误

firefox - 如何将 Aptana 测试保存在单个选项卡中?

ruby - Capybara 和 Rails 的 have_content 规范未能测试是否出现部分消息

ruby-on-rails - Rails 中的 Rspec 测试突然开始失败

ruby-on-rails - Rails,gemfile 中的许多 gem 会减慢网站的速度吗?

ruby-on-rails - Rails Basecamp 风格子域最佳实践

mysql - Rails 关联使用 'model' .'model_id' 而不是 'model' .'id' 触发 SQL where 子句

ruby - 使用 Watir 在其下具有多个链接的 div 中查找文本

javascript - Promise.race 函数比较超时

RSpec + capybara : How do I test a Bootstrap progress bar