我正在关注Michael Hartl的Ruby on Rails教程。
如何使用let
重构此代码而不是使用实例变量?
describe User do
before do
@user = User.new(name: "Example User", email: "user@example.com")
end
subject { @user }
it { should respond_to(:name) }
it { should respond_to(:email) }
it { should be_valid }
describe "when name is not present" do
before { @user.name = " " }
it { should_not be_valid }
end
end
我试图自己重构代码但失败了。
describe User do
let(:user) { User.new(name: "Example User", email:"foo@example.com") }
subject { user }
it { should respond_to(:name) }
it { should respond_to(:email) }
it { should be_valid }
describe "when name is not present" do
# ???
let(:name) { " " }
it { should_not be_valid }
end
end
答案 0 :(得分:1)
对于“当名称不存在时”示例组,这就足够了:
describe "when name is not present" do
before { subject.name = '' }
it { should_not be_valid }
end
从您单独发布的代码中,使用:name
设置let()
没有任何附加价值。