这次我们继续测试Controller,还是Store_controller。
1.先来测试测试CheckOut功能,给store_controller_test.rb添加代码:
def test_checkout test_add_to_cart get :checkout assert_response :success assert_not_nil assigns(:order) assert_template "store/checkout" end
注意这里调用了另一个test方法test_add_to_cart,因为如果购物车为空的话,我们将无法转到预想的checkout页面去,所以我们必须让购物车(cart)里至少有一件商品(item)。所以我们没有写重复代码,而是调用了test_add_to_cart方法来使购物车中有商品。
2.再来测试保存订单功能,我们通过save_order的Action来将保存order,我们的办法就是:cart将items存放到order的model里,然后由order保存到数据库,然后将cart置空,再重新定位到购物的store页面,并且显示一个友好的消息。现在在store_controller_test.rb添加代码:
def test_save_invalid_order test_add_to_cart post :save_order, :order => {:name => 'fred', :email => nil} assert_response :success assert_template "store/checkout" assert_tag :tag => "div", :attributes => { :class => "fieldWithErrors" } assert_equal 1, session[:cart].items.size end
上面是先测试无效的order,我们通过给save_order的Action一个无效的order,当无效的order被提交的时候,我们使用assert_tag来检查响应的div节点的是否是fieldWithErrors类型。
3.下面我们再来测试一个有效的order的保存。
def test_save_valid_order test_add_to_cart assert_equal 1, session[:cart].items.size assert_equal 1, Order.count post :save_order, :order => @valid_order_for_fred.attributes assert_redirected_to :action => 'index' assert_equal "Thank you for your order.", flash[:notice] follow_redirect assert_template "store/index" assert_equal 0, session[:cart].items.size assert_equal 2, Order.find_all.size end
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索测试
, 购物车
, checkout
, order
CART
ruby on rails、ruby on rails 教程、ruby on rails pdf、ruby on rails 5 教程、ruby on rails是什么,以便于您获取更多的相关知识。