2012-05-26 4 views
0

У меня есть эта очень странная проблема, что я не могу понять, почему она не работает.Пользователь не создает в rspec

Это тест, который я бегу на тест оставлять комментарии

https://gist.github.com/2794100

теперь я добавил 2 дополнительные тесты там, чтобы получить представление о том, почему он не был работать «пользователь должен существовать» и «Должна существовать», чтобы попытаться понять, что происходит, все, что я собрал, это то, что пользователь не создает. Что странно причина, когда я запускаю этот другой тест все работает отлично

https://gist.github.com/2794105

создание пользователя является копирование и вставка, видя, как у меня есть электронная почта, как уникальный ключ, я даже попробовал запустить тест сам по себе без каких-либо других тестов, чтобы убедиться в отсутствии конфликта, и я также попытался запустить его с помощью новой базы данных.

если я бегу каждую команду на рельсах консоли все работает, это просто на самом тесте, что он не работает

Любая помощь будет большим.

Благодаря

+1

Что rpsec Приводя в качестве причины отказа? Используете ли вы очиститель базы данных для сброса базы данных между тестами? Вы запустили команду «rake db: test: prepare» после миграции вашей базы данных разработки, чтобы получить новые столбцы в тестовую БД? – DVG

+0

@DVG Я добавил ошибки на этом gist https://gist.github.com/2794100 спасибо и да, я сделал rake db: test: подготовьте, и я также удалил db все вместе и сделал новые, до сих пор не помогаю, я также избавился от уникального индекса и ничего не сделал – merlin371

+0

и '@ user.errors'? – apneadiving

ответ

1

Ваш тест полон линий, как:

before { @post.title == "Example Post"} 

Это просто сравнение, а не назначение. Это не имеет никакого смысла!

Вы всегда ссылаетесь на неявный предмет (it { should ...), который в вашем случае является новым экземпляром PostComment. Вы должны определить, что именно вы тестирования, как:

subject { @foo } 

Или просто явно назвать его:

it 'should be valid even if something is nil' do 
    before { @foo.name = nil } 
    @foo.should be_valid 
end 
+0

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

+0

'@post.title == «Пример сообщения» '- это isn 't тест. Вы видите, что «должно» там? Это просто оператор, который выполняется, и его результат отбрасывается, поскольку вы не назначаете его нигде. Тест - это «@post.title.should ==» Example Post », но нецелесообразно помещать его в блок' before'. – jdoe

+0

thanks @jdoe Я получаю это немного больше, только начал с рельсов, если бы я должен был проверить сравнение таким образом, каков был бы простой способ сделать это? Спасибо – merlin371

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