Тестовый модуль Ruby on Rails 4 пропускает проверки

Я пытаюсь проверить проверки в своем приложении Rails 4. Проблема в том, что при добавлении одной конкретной проверки все тесты проходят успешно, независимо от того, закомментированы остальные проверки или нет. Вот мой код:

# test/models/company_test.rb
setup do
    @company = companies(:one)
    @company2 = companies(:two)
end

test "should not save company with invalid name" do
    @company.name = ""
    assert [email protected], "Saved company without name"

    @company2.name = @company.name
    assert [email protected], "Saved company without unique name"

    @company.name = "a"
    assert [email protected], "Saved company with shorter name than 2 characters"

    @company.name = rand(36**65).to_s(36)
    assert [email protected], "Saved company with longer name than 64 characters"
end

test "should not save company if website is invalid" do
    @company.website = "foo"
    assert [email protected], "Saved company with invalid website"
end

# app/models/company.rb
validates :name, :owner_id, presence: true, uniqueness: true
validates :name, length: { minimum: 2, maximum: 64 }
validates :website, :format => URI::regexp(%w(http https))

Теперь, если я закомментирую проверки имени, все тесты все равно пройдут. И затем, если я также закомментирую проверку веб-сайта, все тесты не пройдут.


person rb-    schedule 05.03.2014    source источник


Ответы (1)


Не нашел, что не так с этим конкретным кодом, но обошёл его:

Я использовал регулярное выражение из здесь и поместил его с проверкой формата, определенной в руководство по Ruby on Rails.

# app/models/company.rb
validates :website, format: { with: /((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)/, message: "invalid url" }
person rb-    schedule 07.03.2014