zoukankan      html  css  js  c++  java
  • 单元测试调试之传参篇

    文章是从我的个人博客上粘贴过来的,

    大家也可以访问 www.iwangzheng.com

    今天有两个单元测试一直跑不通,究其原因是没搞清楚单元测试的传参的概念,之前大师强调过的,今天pp又讲解了一遍。以第一个单元测试的测试模块的25行为例

    25 put :modify, :id => @list.id, :rankinglist => {:title => new_title}

    这个报错是因为我写成了list =>{:title => new_title},但是被测模块里是没有这个参数的,想知道有啥就看被测模块 params里面的内容啊,有几个传几个就行。

    这个巧合的是我的前端代码是这样的

    <%=  text_field_tag  'title' ,@rankinglist.title  %>由于text_field_tag里的内容在html里解析为id=‘title’,name ='title',所以在25行里没有:title也是ok的

    23def modify
    24 @rankinglist.title = params[:title]
    25 if @rankinglist.update_attributes(params[:rankinglist])
    26 redirect_to edit_tv_i_rankinglist_path(:id => @rankinglist.id) , :notice => '操作成功'
    27 else
    28 render :action => "edit"
    29 end
    30 end

    对应的单元测试

    23it 'should put update' do
    24 new_title = 'test'
    25 put :modify, :id => @list.id, :rankinglist => {:title => new_title}
    26 @list.reload.title.should == new_title
    27 end

    再来看第二个写错的单元测试

    5def index
    6 @module_type = params[:module_type]
    7 @rankinglists = CmsTvRankingList.where('state = ? ', 1)
    8 @rankinglist = CmsTvRankingList.find_by_id(params[:rankinglist_id]) || @rankinglists.try(:first)
    9 @modules = CmsTvRankingListModule.where('rankinglist_type = ? ', @rankinglist.id).order(:position)
    10 end

    对应的单元测试

    5before do
    6 admin_login
    7 request.env["HTTP_REFERER"] = root_path
    8 @rankinglist = CmsTvRankingList.create(:title =>'5' ,:state => '1')
    9 @module = CmsTvRankingListModule.create(:title => '测试', :rankinglist_type => 5)
    10 end
    11 it 'should get index' do
    12 get :index, :rankinglist_id =>'1'
    13 response.should be_success
    14 end

    错在哪里呢,由于这个排行榜子菜单是在排行榜菜单内部的,所以是需要先保证被测的第8行是有值的,所以需要写上测试里的第8行,当然,测试的12行后半句也是必要的。

  • 相关阅读:
    C#学习笔记一类型转换、枚举、foreach
    C#学习笔记四ref out参数
    SQL学习笔记一SQL基础
    C#学习笔记七索引器
    QUIC和TCP
    接口测试——测试点
    linux下 服务器资源监控工具nmon安装与使用
    Python执行.sh脚本cataline环境变量配置
    linux 常用命令之运行.sh文件
    jacoco+ant安装部署篇
  • 原文地址:https://www.cnblogs.com/iwangzheng/p/3624080.html
Copyright © 2011-2022 走看看