如何在Rspec中正确进行字符串连接?

ror*_*ler 1 ruby rspec ruby-on-rails

我正在Rspec中测试邮件程序,并且遇到了字符串串联的问题。当我这样做时,如下所示:

it 'renders the subject' do
  expect(mail.subject).to eq('#{order.firstname} <#{order.email}> has made an order.')
end
Run Code Online (Sandbox Code Playgroud)

我收到以下消息:

OrderMailer instructions renders the subject
 Failure/Error: expect(mail.subject).to eq('#{order.firstname} <#{order.email}> has made an order.')

   expected: "\#{order.firstname} <\#{order.email}> has made an order."
        got: "Joe <joe@mctester.com> has made an order."

   (compared using ==)
Run Code Online (Sandbox Code Playgroud)

但是,当我执行以下操作时,它会通过:

it 'renders the subject' do
  expect(mail.subject).to eq(order.firstname + " <" + order.email + "> has made an order.")
end
Run Code Online (Sandbox Code Playgroud)

在rspec中进行串联的正确方法是什么?我发现第一种方法在眼睛上更容易操作。

tle*_*man 5

字符串插值仅在ruby中使用双引号:

it 'renders the subject' do
  expect(mail.subject).to eq("#{order.firstname} <#{order.email}> has made an order.")
end
Run Code Online (Sandbox Code Playgroud)

那应该工作。