0

私はこのすべてのレール/rspecなどに慣れていないので、私が取り組んでいるプロジェクトで見つけたいくつかのテストに従おうとしていますが、それらは足場によって生成されましたが、アプリは非常に異なっていて、テストが更新されたので、すべてのテストをやり直しています。

問題は、無効な電子メールがユーザーを無効にする必要があることを検証しようとすると失敗することです。すでにテストを行っており、問題なく合格しているので、問題ないことはわかっています。

これは私の見方が間違っている可能性もありますが...

ユーザー仕様

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

ユーザーテスト

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 

検証はdeviseによって行われ、失敗メッセージは「expected valid? to return false, got true」です

- - 編集 - -

私のユーザー設定

...
describe User do
  before :each do
    @user = User.new(name: "Name of Names", email:"someone1@somewhere.com",password: "foobarfoobar", password_confirmation: "foobarfoobar" )
  end
...
4

1 に答える 1

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 できます。

于 2013-11-08T14:19:39.927 に答える