Ruby on rails 如何在Rspec中正确地进行字符串连接?

Ruby on rails 如何在Rspec中正确地进行字符串连接?,ruby-on-rails,ruby,rspec,Ruby On Rails,Ruby,Rspec,我正在用Rspec测试一个邮件程序,遇到了一个字符串连接的怪癖。当我这样做的时候: it 'renders the subject' do expect(mail.subject).to eq('#{order.firstname} <#{order.email}> has made an order.') end 它“呈现主题”执行以下操作 expect(mail.subject).to eq(“#{order.firstname}已下订单。”) 终止 我得到以下信息: O

我正在用Rspec测试一个邮件程序,遇到了一个字符串连接的怪癖。当我这样做的时候:

it 'renders the subject' do
  expect(mail.subject).to eq('#{order.firstname} <#{order.email}> has made an order.')
end
它“呈现主题”执行以下操作
expect(mail.subject).to eq(“#{order.firstname}已下订单。”)
终止
我得到以下信息:

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 ==)
OrderMailer指令呈现主题
失败/错误:expect(mail.subject).to eq(“#{order.firstname}已下订单”。)
应为:“\\{order.firstname}已下订单。”
格特:“乔已经下了命令。”
(使用==进行比较)
但是,当我执行以下操作时,它会通过:

it 'renders the subject' do
  expect(mail.subject).to eq(order.firstname + " <" + order.email + "> has made an order.")
end
它“呈现主题”执行以下操作
expect(mail.subject).to eq(order.firstname+“已下订单”)
终止

在rspec中连接的正确方法是什么?我发现第一种方法更直观,使用起来更快。

字符串插值只适用于ruby中的双引号:

it 'renders the subject' do
  expect(mail.subject).to eq("#{order.firstname} <#{order.email}> has made an order.")
end
它“呈现主题”执行以下操作
expect(mail.subject).to eq(“#{order.firstname}已下订单。”)
终止

这应该行得通。

字符串插值仅适用于ruby中的双引号:

it 'renders the subject' do
  expect(mail.subject).to eq("#{order.firstname} <#{order.email}> has made an order.")
end
它“呈现主题”执行以下操作
expect(mail.subject).to eq(“#{order.firstname}已下订单。”)
终止

这应该行。

否决这个问题是不公平的。是的,这是一个ruby noob的错误,但这不是一个坏问题。否决这个问题是不公平的。是的,这是一个ruby noob的错误,但这不是一个坏问题。当然。我一直在ruby中使用双引号,所以我从来没有遇到过这个问题。我一直在ruby中使用双引号,所以我从未遇到过这种情况。