3

Rspec 隐含定义的主题文档说:

虽然下面的示例演示了如何将主题用作面向用户的概念,但我们建议您保留它以支持自定义匹配器和/或隐藏其使用的扩展库。

这是否意味着,我应该尽量不叫“主题”。直接在我的规格中?如果是,我应该使用什么来代替主题对象?

4

1 回答 1

3

比较这两个例子:

describe "User" do
  subject { User.new(age: 42) }
  specify { subject.age.should == 42 }
  its(:age) { should == 42 }
end

describe "User" do
  let(:user) { User.new(age: 42) }
  specify { user.age.should == 42 }
end

更新

Rspec 中有一个很酷的功能 - 命名主题:

这是大卫切利姆斯基的一个例子

describe CheckingAccount, "with a non-zero starting balance" do
  subject(:account) { CheckingAccount.new(Money.new(50, :USD)) }
  it { should_not be_overdrawn }
  it "has a balance equal to the starting balance" do
    account.balance.should eq(Money.new(50, :USD))
  end
end

当您使用它user而不是它时,subject它更具可读性(恕我直言)。但是subject可以让你使用不错的扩展its(:age)

于 2012-06-11T23:13:50.450 回答