我是所有这些rails / rspec的新手等等,所以我试着按照我在项目中找到的一些我正在工作并且有意义的测试,它们是由脚手架生成但应用程序非常不同的,没有测试更新,所以我重新做每一次测试。
问题是,当我尝试验证无效电子邮件应该使用户无效时,它会失败。 我知道这没关系,因为我已经完成了测试并且没有任何问题就通过了。
我有可能以错误的方式看待这个......但
User_spec
describe "when email format is invalid" do
it "should be invalid" do
addresses = %w[user@foo,com user_at_foo.org example.user@foo.
foo@bar_baz.com foo@bar+baz.com]
addresses.each do |invalid_address|
@user.email = invalid_address
@user.should_not be_valid
end
end
end
User_test
test "fail save new user with an corrupt email" do
user = User.new
user.name = 'Someone Name'
user.password = '12345678'
user.email = 'Someone Name@gmail..com'
assert !user.save , "User was saved with an corrupt email"
end
验证是由设计完成的,失败消息是“预期有效?返回false,得到真实”
----编辑---
我的用户设置
...
describe User do
before :each do
@user = User.new(name: "Name of Names", email:"someone1@somewhere.com",password: "foobarfoobar", password_confirmation: "foobarfoobar" )
end
...
答案 0 :(得分:2)
你可以做一些事情:
context "validations" do
describe "email" do
subject { FactoryGirl.create(:user, email: email) }
context "with an valid address" do
let(:email) { "valid@email.com" }
it { should be_valid }
end
context "with an invalid email address" do
let(:email) { "invalid.email.com" }
it { should_not be_valid }
end
end
end
所以我假设您正在使用FactoryGirl来创建有效的用户对象。只需为每个无效的电子邮件创建新的测试,这样您就可以看到哪些测试正在通过,哪些不通过。那么你可以通过TDD方式进行绿化。