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

以前的随笔都是按照书上的例子写下来的,但是,这次在测试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_book为Null的错误:

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里的内容全部替换成书中完整的代码也还是不行,是不是版本问题?

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索测试
, description
根据
ruby on rails model、ruby on rails、ruby on rails 教程、ruby on rails pdf、ruby on rails 5 教程,以便于您获取更多的相关知识。

时间: 2024-12-22 02:34:08

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

Ruby on rails开发从头来(五十一)- ActiveRecord基础(并发处理)

在学习Rails中的并发处理的处理前,我们先简单了解下并发处理的概念. 在有多个处理同时访问同一个数据库的应用程序中,可能会出现这样的情况,因为一个处理更新了数据库中的行,而使得另一个处理中持有的数据变得陈旧了.例如,A和B先后从数据库中提取了相同的数据,并都做了修改,这时B先将自己的修改更新会数据库,稍后,A将自己的修改更新回数据库,这时将会覆盖B所作的修改,当B再次提取数据库后,看到的是A修改的结果,而不是自己的. 一个解决办法就是将更新的表或者行进行锁定,防止其他程序进行更新或者访问,锁定

Ruby on rails开发从头来(四十一)- ActiveRecord基础(存储结构化数据)

有时,能够在某个属性中直接存储任意的ruby对象是很方便的,一种办法就是Active Record支持序列化,将一个ruby对象变为一个YMAL字符串,并且将这个字符串存储到属性对应的数据库字段中.在数据库定义中,这个字段必须为text类型. 因为Active Record将数据库中的Char型和text型映射为ruby的string型,所以如果我们需要告诉Active Record使用序列化功能,例如,我们想知道某个客户进行的最后的5次消费,我们创建一个含有text类型字段的表来保存信息: c

Ruby on rails开发从头来(windows)(三)-实现页面间的跳转

在上篇随笔Ruby on rails开发从头来(windows)(二)-创建项目和第一个Hello world 中,我们介绍了如何使用InstantRails创建一个项目和编写一个简单的Helloworld页面,今天在上次的基础上,写一个简单的页面跳转. 1.将appcontrollers目录下的say_controller.rb文件的内容改成下面这样: class SayController < ApplicationController def Hello @time = Time.now

Ruby on rails开发从头来(windows)(四)-第一个添删查改例子

在上一篇Ruby on rails开发从头来(windows)(三)-实现页面间的跳转中,我们创建了两个页面来进行跳转迁移,这次我们来写一个单表维护的添删查改的例子. 1.这次我们重新创建一个项目depot,按照上篇中的步骤,创建depot项目. 2.创建数据库. 你可以使用rails的命令行,通过mysql创建,先定位到depot目录,使用命令: depot> mysql -u root –p 密码为空,连接mysql后执行下面的命令: mysql> create database depo

Ruby on rails开发从头来(windows)(一)

使用InstantRails快速搭建Ruby On Rails开发环境 一直对Ruby on Rails抱有很大的兴趣,想看看这个被很多人称道的东西,但是一直在做windows下的开发,对于Ruby on Rails的开发环境搭建还是很头疼,这也是一直没有开始研究Ruby on rails的原因.刚刚在javaeye看到了InstantRails,一个All In One的套件,可以帮助你快速搭建Ruby On Rails开发环境,就立即下了一个试了试,还好,比较顺,起码可以跑起来自带的例子了.

Ruby on rails开发从头来(windows)(十二)-订单(Order)

在上次的内容里,我们创建了订单的Model,和表示页面,这次继续编写CHECKOUT的处理. 1.在checkout.rhtml的页面上,有一个CHECKOUT按钮,上次还没有给它编写处理代码,现在在store_controller中添加save_order方法,代码如下: def save_order @cart = find_cart @order = Order.new(params[:order]) @order.line_items <<@cart.items if @order.s

Ruby on rails开发从头来(windows)(二)

创建项目和第一个Hello world 在前面的"使用InstantRaisl快速搭建Ruby on rails环境"后,这一次说说如何创建自己的项目,并写一个最简单的Hello页面,例子是借用Agile Web Development with Rails中的. 按照下面的步骤: 1.使用菜单,如下图: 开发从头来(windows)(二)-ruby on rails"> 2.点击"Create New Rails App-"按钮,如下图

Ruby on rails开发从头来(windows)(三十二)- Rails的配置文件

Rails的运行时配置是由config目录下的文件来控制的. 1.运行时环境(Runtime environment) 当开发者编写代码时,需求是多中多样的.在开发中你可能会需要很多的登录,加载变化过的代码.在测试时,你需要各个系统之间是隔离开的.在发布之前,你可能需要进行性能优化,并且时用户远离bug. 为了支持这一切,Rials有运行时配置的概念.每一个环境都拥有自己的一组配置,可以在不同的环境中运行同一个应用程序. 切换运行环境可以使我们不用修改代码就可以从开发切换到测试再切换到发布.怎样

Ruby on rails开发从头来(windows)(二十七)- 测试驱动开发

在敏捷开发的实践中,测试驱动是少不了的.这篇来看看在rails中的一个测试驱动开发的例子. 在前面我们编写并进行了一些单元测试和功能测试,现在,我们的客户突然要求添加一个功能:系统的每个用户都可以对商品进行查询. 我们先初步的画了一些草图,来整理我们的思路和设计,然后开始写代码.对于具体的实现,我们已经有了大致的思路,但是如果有更多的反馈信息的话会有助于我们走在正确的道路上.我们会在深入到代码之前,编写测试代码.考虑我们的代码将怎样工作,确定一些规约,当测试通过,你的代码就OK了. 现在,我们来