2013-12-17 4 views
1

Я изучаю Rspec для Rails и ищу способ обеспечить, чтобы просто создать экземпляр класса без указанного имени не получится. Как я могу сделать этот тест ниже, внося изменения в код класса Dog?Прохождение тестов проверки в рельсах

class Dog < ActiveRecord::Base 
    validates_presence_of :dog_name 
end 

describe Dog do 
    it "requires a dog name to be created" do 
    dog = Dog.new(dog_name: nil) 
    expect(dog.save).to be_false 
    end 
end 

Было бы также полезно знать, как написать еще один тест, чтобы убедиться, что, когда dog_name установлено, что запись успешно создана.

ответ

2

Я настоятельно рекомендую проверить драгоценный камень shoulda-matchers. Это позволит вам легко выполнять эти тесты. С shoulda-matchers, тесты будут:

describe Dog do 
    context 'validations' do 
    it { should validate_presence_of(:dog_name) } 
    ... 
    end 
end 
+3

Я думаю, что необычный для RSpec новый, что означает сложение другой библиотеки, чтобы сделать совпадение для них, пропускает процесс обучения. –

+0

Полностью, но часть процесса обучения - это научиться не изобретать колесо, если драгоценные камни доступны. – CDub

+2

Это спецификации контроллера. OP хочет протестировать модель. – NARKOZ

-4
describe Dog do 
    it "requires a dog name to be created" do 
    dog = Dog.create(dog_name: nil) 
    expect(dog).to have(1).error_on(:dog_name) 
    end 
end 
+4

Вы всегда должны дать объяснение своего ответа. –

+2

@NARKOZ. Пожалуйста, прекратите отвечать и в этом случае. – user1596138

+0

@NARKOZ - это довольно дерьмовый способ пообщаться со Штабелем. Какой смысл отвечать? –

0

Там нет ничего плохого в тесте. Он должен пройти, если ваша система настроена правильно. Вам нужно будет поделиться полученной вами ошибкой, если вам нужна помощь в понимании того, почему она в настоящее время терпит неудачу.

Что касается тестирования на успешное создание, вам необходимо предоставить дополнительную информацию о том, что вы пробовали, или о том, какую ссылку вы используете, которую вы не понимаете, чтобы соответствовать требованиям качества вопроса SO.

+0

Это не ответ, а комментарий к нему. Ответ почти никогда не может содержать прямой вопрос и по-прежнему остается верным ответом. – user1596138

+0

@Jhawins Я бы сказал, что первый абзац квалифицируется как ответ, но я обновил второй абзац, чтобы устранить этот вопрос. –

Смежные вопросы