Spy*_*ros 6 rspec ruby-on-rails
这些天我正在进入rspec,试图让我的模型更加精确和准确.关于rspec,有些事情对我来说仍然有些奇怪,所以我觉得如果有人能澄清那就好了.
假设我有一个用户模型.这个有一个:名字.名称应该在4..15个字符之间(这是次要目标,起初它必须存在).所以现在我在想:以确保这种情况发生的方式测试它的最佳方法是什么.为了测试用户必须有一个名字,我写了这样的东西:
describe User do
let(:user) { User.new(:name => 'lele') }
it "is not valid without a name" do
user.name.should == 'lele'
end
end
Run Code Online (Sandbox Code Playgroud)
现在,我不太确定这完全符合我的要求.在我看来,我实际上正在测试这个Rails.此外,如果我想检查名称不能超过15个字符且小于4个字符,那么如何将其集成?
编辑:
也许这更好?
describe User do
let(:user) { User.new(:name => 'lele') }
it "is not valid without a name" do
user.name.should_not be_empty
end
end
Run Code Online (Sandbox Code Playgroud)
Dyl*_*kow 15
你可能正在寻找be_valid匹配器:
describe User do
let(:user) { User.new(:name => 'lele') }
it "is valid with a name" do
user.should be_valid
end
it "is not valid without a name" do
user.name = nil
user.should_not be_valid
end
end
Run Code Online (Sandbox Code Playgroud)
我用这种方式:
describe User do
it "should have name" do
lambda{User.create! :name => nil}.should raise_error
end
it "is not valid when the name is longer than 15 characters" do
lambda{User.create! :name => "im a very looooooooong name"}.should raise_error
end
it "is not valid when the name is shorter than 4 characters" do
lambda{User.create! :name => "Tom"}.should raise_error
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5789 次 |
| 最近记录: |