ruby - 可以在 rspec 中使用花括号来阻止它吗?
问题描述
it 'returns true for correct password' do
expect(user.is_password?('password')).to eq(true)
end
我的 rspec 有此代码,但是当我将其替换为
it 'returns true for correct password' { expect ...}
它抱怨
syntax error, unexpected '{', expecting `end'
...ns true for correct password' {expect(user.is_password?('pas..
花括号不应该等同于do...end
?
解决方案
由于do
andend
是除了块之外的任何其他上下文中不使用的关键字,Ruby 解释器理解它没有问题。但是花括号至少在两种不同的上下文中使用,首先充当块分隔符,其次充当 的分隔符Hash
,这意味着您在使用花括号时必须在这里帮助 Ruby 解释器让它知道您的上下文想要使用花括号。
在您的情况下,如果您使用带括号的方法语法,即it()
而不是it
,这应该告诉解释器括号后面的花括号被解释为块的分隔符。
用这个...
it('returns true for correct password') { expect ... }
而不是这个。
it 'returns true for correct password' { expect ... }
推荐阅读
- css - 我需要用 SVG 创建 2 色曲线响应背景
- javascript - d3 line graph - how to start line to the right of Y axis?
- php - Laravel 使用 MariaDB 使用 json 连接表
- c++ - 如何修复此 OpenCV 错误:CV::Vec 中的断言失败 ((unsigned)i < (unsigned)cn)
::运算符(),文件 - php - 在更新多行之前验证 foreach 循环中的输入
- reactjs - 如何在不添加 Jsx 标签的情况下显示自定义警报
- javascript - Next.js dynamic page params for static export
- javascript - 无法通过 ajax 将带有单选按钮数据的额外表单数据传递给 php
- javascript - 如何在 onClick 中调用多个方法进行反应?
- java - 使用两个不同的ArrayLists时如何根据uids查找组?