On Rails 4。
刚刚使用approved?
default: false
属性
当我去编写集成测试时,我注意到在测试环境中approved?
默认为true。为了抵消这种行为,我手动将approved: false
添加到fixtures(articles.yml)文件中,但我觉得我不应该这样做。
这是正确的行为吗?还是新的测试。
以下是我的迁移内容:
class AddApprovalToArticles < ActiveRecord::Migration
def change
add_column :articles, :approved, :boolean, default: false
add_column :articles, :approved_at, :datetime
add_column :articles, :approved_by, :string
end
end
这是我的测试没有通过:
test "mod article should not be approved as default" do
log_in_as(@mod)
article = articles(:mod_article)
assert_not article.approved?
get edit_article_path(article)
assert_template 'articles/edit'
end
和我的灯具:
mod_article:
title: is it bad to be a mod
content: no I don't think so
created_at: <%= 10.days.ago %>
updated_at: <%= 10.days.ago %>
user: mod
如果我将approved: false
添加到上面的灯具中,它将通过。
我最近完成了Michael Hartl的Rails教程,其中我们在用户模型中添加了admin?
布尔值。在这种情况下,灯具知道将值默认为false。
感谢您的帮助,如果您需要我的任何其他特定代码,请与我们联系。
答案 0 :(得分:0)
Fixtures是样本数据的一个奇特的词。夹具允许你 在测试之前使用预定义数据填充测试数据库 跑。夹具是用YAML编写的数据库独立的。 Quoted from Rails Guide
如果您使用灯具,则不会对您的数据库进行测试。因此,迁移中设置的默认值并不重要。