• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Ruby on rails开发从头来(windows)(二十一)-测试Model时的问题

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

以前的随笔都是按照书上的例子写下来的,但是,这次在测试Model时,按照书上的例子代码怎么也走不通,所以就换个方式,这篇变成了提问。

 

按照书上的说法,在products_test.rb开始的时候,会根据定义的yml文件,加载测试数据到一个Hash里,这样,在test的时候我们就可以根据yml文件中用例的名字来访问一个product对象,例如:

def test_read_with_hash

assert_kind_of Product, @product

vc_book = @products["version_control_book"]

assert_equal vc_book["id"], @product.id

assert_equal vc_book["title"], @product.title

assert_equal vc_book["description"], @product.description

assert_equal vc_book["image_url"], @product.image_url

assert_equal vc_book["price"], @product.price

assert_equal vc_book["date_available"], @product.date_available_before_type_cast

end

但是,根据在运行测试的时候总是提示vc_bookNull的错误:

3) Error:

test_read_with_hash(ProductTest):

NoMethodError: You have a nil object when you didn't expect it!

You might have expected an instance of Array.

The error occurred while evaluating nil.[]

    test/unit/product_test.rb:41:in `test_read_with_hash'

怎么回事呢?即使将product_test.rb里的内容全部替换成书中完整的代码也还是不行,是不是版本问题?

product_test.rb全部代码:

require File.dirname(__FILE__) + '/../test_helper'

class ProductTest < Test::Unit::TestCase

  fixtures :products

  def setup

    @product = Product.find(1)

  end

  # Replace this with your real tests.

  def test_truth

    assert_kind_of Product, @product

  end

  def test_create

    assert_kind_of Product, @product

    assert_equal 1, @product.id

    assert_equal "Pragmatic Version Control", @product.title

    assert_equal "How to use version control", @product.description

    assert_equal "http://.../sk_svn_small.jpg", @product.image_url

    assert_equal 29.95, @product.price

    assert_equal "2005-01-26 00:00:00",

    @product.date_available_before_type_cast

  end

  def test_update

    assert_equal 29.95, @product.price

    @product.price = 99.99

    assert @product.save, @product.errors.full_messages.join("; ")

    @product.reload

    assert_equal 99.99, @product.price

  end

  #~ def test_destroy

    #~ @product.destroy

    #~ assert_raise(ActiveRecord::RecordNotFound) { Product.find(@product.id) }

  #~ end

  def test_validate

    assert_equal 29.95, @product.price

    @product.price = 0.00

    assert [email protected]

    assert_equal 1, @product.errors.count

    assert_equal "should be positive", @product.errors.on(:price)

  end

  def test_read_with_hash

    assert_kind_of Product, @product

    vc_book = @products["version_control_book"]

    assert_equal vc_book["id"], @product.id

    assert_equal vc_book["title"], @product.title

    assert_equal vc_book["description"], @product.description

    assert_equal vc_book["image_url"], @product.image_url

    assert_equal vc_book["price"], @product.price

    assert_equal vc_book["date_available"], @product.date_available_before_type_cast

  end

  def test_read_with_fixture_variable

    assert_kind_of Product, @product

    assert_equal @version_control_book.id, @product.id

    assert_equal @version_control_book.title, @product.title

    assert_equal @version_control_book.description, @product.description

    assert_equal @version_control_book.image_url, @product.image_url

    assert_equal @version_control_book.price, @product.price

    assert_equal @version_control_book.date_available, @product.date_available

  end

end


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
ruby watir校内自动加好友代码发布时间:2022-07-13
下一篇:
腾讯QQ企业邮箱在ruby on rails 框架中的mailer配置发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap