rspec中的这种表示法是什么:它{is_expected_to ..}

时间:2014-09-08 16:46:47

标签: ruby rspec

我正在阅读'Better specs'页面,并在其中一个示例中说:

context 'when logged in' do
  it { is_expected.to respond_with 200 }
end
context 'when logged out' do
  it { is_expected.to respond_with 401 }
end

我不承认这一点。我通常会这样做:

context 'when logged out' do
  it 'responds with a 401' do
    expect(response).to eq(401)
  end
end

那是什么语法?

2 个答案:

答案 0 :(得分:4)

这是Rspec 3.XX中大量引入的内容。它符合here

概述的单行语法指南
  

RSpec支持单行语法,用于设置期望值   学科。 RSpec将为示例提供一个自动的文档字符串   从示例中使用的匹配器生成。这是设计的   专门用于帮助避免在doc的情况下出现重复   字符串和示例中使用的匹配器完全相互镜像。   如果过度使用,它可以产生文档输出   阅读不好或有助于理解你的对象   描述

     

这有两种形式:

     

is_expected简单地定义为expect(subject)并且是专为   当你使用较新的基于期望的rspec期望时   语法。

答案 1 :(得分:2)

it { is_expected.to respond_with 200 }

更具可读性。 如果您可以从测试中读取它,为什么添加说明。 您的代码应该是简单,智能和可读的同时... 但是,如果你真的想要,你可以添加甚至小说......由你决定:)