Rspec Rails-expect的Capybara语法

Rspec Rails-expect的Capybara语法,rspec,Rspec,这是测试单击按钮是否更改了用户数量的正确代码: 期望{单击按钮“创建我的帐户”}。不更改(用户::计数)(正确) 但是这些卷曲的大括号看起来很奇怪地放在上面。为什么水豚使用上面的语法而不是下面的语法 expect{单击按钮(“创建我的帐户”)。不更改(用户::计数)}(不正确)expect{}正在指定一个代码块,执行后根据change关键字测试该代码块。请参见每个Ruby方法都需要。块用do…end构造或大括号表示 def my_method yield end my_method { p

这是测试单击按钮是否更改了用户数量的正确代码:

期望{单击按钮“创建我的帐户”}。不更改(用户::计数)
(正确)

但是这些卷曲的大括号看起来很奇怪地放在上面。为什么水豚使用上面的语法而不是下面的语法


expect{单击按钮(“创建我的帐户”)。不更改(用户::计数)}
(不正确)

expect{}正在指定一个代码块,执行后根据change关键字测试该代码块。请参见

每个Ruby方法都需要。块用
do…end
构造或大括号表示

def my_method
  yield
end

my_method { puts "hello world" }
"hello world"
=> nil

my_method do
  puts "hello world again!"
end
"hello world again!"
=> nil
expect
在本例中是一种方法,而不是水豚法。大括号表示您正在定义稍后将执行的代码。在这种情况下,它将在两次调用某个等价的
User.count
之间执行

# approximation of what RSpec is doing with `expect` curly braces.
count = User.count
yield # executes code in curly braces
new_count = User.count
assert(count == new_count)

这与水豚无关-