在rspec中可以使用大括号来表示它的块吗?

问题描述 投票:0回答:1
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 ?

ruby rspec
1个回答
4
投票

因为 doend 是关键字,除了块之外,其他任何上下文都不使用,Ruby解释器理解起来并不困难。但大括号至少在两种不同的上下文中使用,首先是作为块的定界符,其次是作为 Hash这意味着当你使用大括号时,你必须在这里帮助Ruby解释器一点,让它知道你想在什么上下文中使用大括号。

在你的例子中,如果你使用带括号的方法语法,即 it() 而不是 it这应该告诉解释者,括号后的大括号应该被解释为一个块的定界符。

用这个...

it('returns true for correct password') { expect ... }

而不是使用this...。

it 'returns true for correct password' { expect ... }
© www.soinside.com 2019 - 2024. All rights reserved.