5 ruby ruby-on-rails minitest ruby-on-rails-3 ruby-on-rails-4
我刚刚开始学习测试,minitest但这对我来说听起来很混乱.这个陈述是什么意思?
test 'should not save simulations without name' do
post = Post.new
assert !post.save, 'Saved the simulations without a name'
end
Run Code Online (Sandbox Code Playgroud)
class Post < ActiveRecord::Base
validates_presence_of :name , :type
belongs_to :user
before_create :check_validation
validates :type, :inclusion => { :in => 1..10, :message => 'The row must be between 1 and 10' }
private
def check_validation(data, type)
....
end
Run Code Online (Sandbox Code Playgroud)
minitest以下条件的方法是什么:
name,type参数创造了一个新的对象时存在的Post类.我该怎么做post_test课?test方法是检查存在name的post?check_Validation通过PostTest课堂考试?posts不属于用户,如何检查抛出错误?我已经创建了post.yml文件和user.yml文件.如何再次进行 我试图阅读ruby官方文档,但它不是很有帮助.
谢谢你的支持
我的yml文件
one:
name: 'test'
type: 3
user_id: 1
Run Code Online (Sandbox Code Playgroud)
我试过了 :
test 'Post must have all parameters' do
assert assigns(:one).valid?
Run Code Online (Sandbox Code Playgroud)
结束
创建Post类的新对象时检查name、type参数是否存在。我该如何做 post_test 课?
此测试方法是否检查帖子中是否存在姓名?
有点。该断言检查保存新的 Post 实例失败,但导致该结果的原因有多种 - 例如缺少:name属性:type、before_create可能劫持保存操作的过滤器。
如果您想单独测试每个验证,您需要从已知的有效 Post 记录开始,并对其进行操作以触发每个验证失败。通常,我会在我的装置文件中设置至少一条最低限度有效的记录 - 在这种情况下,我将其称为:mvp. 前任:
test 'MVP is valid' do
assert posts(:mvp).valid?, 'Minimum valid Post is invalid'
end
test 'should not save simulations without name' do
post = posts(:mvp)
post.name = nil
assert post.invalid?, 'Post is valid without a name'
end
...
Run Code Online (Sandbox Code Playgroud)
在大多数情况下,我发现测试简单的验证(存在、简单的数字等)会让我的测试变得混乱,而且有点像测试框架而不是我自己的应用程序代码,所以我经常会跳过它们。
如何通过 PostTest 类测试 check_Validation?
check_validation被标记为私有方法,一般情况下,你不想直接测试私有方法。但是,您可以验证在新创建的模型上设置的条件是否符合您的期望:
test 'newly created Post has settings XYZ' do
post = Post.new(...)
assert post.save, 'Post could not be saved'
# assertions to test #check_validations side effects here...
end
Run Code Online (Sandbox Code Playgroud)
您没有包含方法的主体check_validation,所以我不知道您在这里的想法。不过,有了这样的名称,我倾向于相信您正在尝试进行某种验证,最好将其留给使用该方法定义的自定义验证方法validate。请参阅文档以了解它是否适用于您的情况。
如果帖子不属于用户,如何检查抛出错误?
我会将其作为您的 Post 课程的验证条件:
class Post
belongs_to :user
validates :user, presence: true
end
Run Code Online (Sandbox Code Playgroud)
希望能有所帮助。我试图以一种能让您继续工作的方式回答您的问题,但如果您有兴趣学习如何使用 Rails 和 Minitest 提高工作效率,您将需要更深入地研究框架以及它如何与 Rails 一起使用。
| 归档时间: |
|
| 查看次数: |
643 次 |
| 最近记录: |