Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 理解rubyonrails中的assert_差异_Ruby On Rails - Fatal编程技术网

Ruby on rails 理解rubyonrails中的assert_差异

Ruby on rails 理解rubyonrails中的assert_差异,ruby-on-rails,Ruby On Rails,有人能解释一下这个测试代码是做什么的吗 assert_difference('Post.count') do post :create, :post => { :title => 'Hi', :body => 'This is my first post.'} end 以及: 即使我读了文档,我也无法理解它 谢谢 这只是检查以确保指定的任何类型的对象数量都增加了1。(检查对象是否已添加到数据库是一种简单的方法)assert\u差异验证其第一个参数(可传递给eval的字

有人能解释一下这个测试代码是做什么的吗

assert_difference('Post.count') do
    post :create, :post => { :title => 'Hi', :body => 'This is my first post.'}
end
以及:

即使我读了文档,我也无法理解它


谢谢

这只是检查以确保指定的任何类型的对象数量都增加了1。(检查对象是否已添加到数据库是一种简单的方法)

assert\u差异验证其第一个参数(可传递给
eval
的字符串)的求值结果在调用其传递的块后是否发生了一定量的变化。上述第一个示例可以“展开”为:


此断言用于验证第一个参数中的特定/指定差异。第一个参数应该是字符串,即“Post.count”。第二个参数的默认值为1,您也可以指定其他数字,甚至是负数。欲了解更多详情,请访问:

此方法用于验证第一个参数和第二个参数之间是否存在数值差异。在大多数情况下,第一个参数是一个类似于
“Post.count”
的字符串,第二个参数是一个块。在rails中,这主要用于功能测试,以检查对象是否可以保存在数据库中。逻辑是,在保存新的is对象之前,该特定表中的记录数必须与保存对象后的记录数不同(精确地说是从1开始)。

但是为什么第二个示例有+1,而第一个示例没有第二个参数?有什么区别?@fayer-我相信默认值是
+1
。在第二个例子中,他们只是明确地说明了这一点。
assert_difference 'ActionMailer::Base.deliveries.size', +1 do
  post :invite_friend, :email => 'friend@example.com'
end
before = Post.count # technically, eval("Post.count")
post :create, :post => { :title => 'Hi', :body => 'This is my first post.'}
after = Post.count
assert_equal after, before + 1