icon 《基础 Ruby on Rails》的示例程序asagao与Rails2.2相适应

综合测试和rak

上一章为止,asagao 的单元测试和功能测试全部都通过了。

这次,来进行综合测试吧。

> rake test:integration
(省略)

  1) Failure:
test_linked(InnerLinksTest)
    [./test/integration/inner_links_test.rb:22:in `visit'
     ./test/integration/inner_links_test.rb:28:in `visit'
     ./test/integration/inner_links_test.rb:25:in `each'
     ./test/integration/inner_links_test.rb:25:in `visit'
     ./test/integration/inner_links_test.rb:13:in `test_linked'
     /usr/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/testing/setup_and_teardown.rb:60:in `__send__'
     /usr/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/testing/setup_and_teardown.rb:60:in `run'
     /usr/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/integration.rb:597:in `run']:
A wrong or broken path </account/show> was found within the page </>.
Expected response to be a <:success>, but was <404>

2 tests, 37 assertions, 1 failures, 0 errors
rake aborted!
Command failed with status (1): [/usr/bin/ruby -Ilib:test "/usr/lib/ruby/ge...]

(See full trace by running task with --trace)

对于一直关注这个连载的朋友来说这个很简单的吧。

正如在单例资源里说明的一样,原因就是 Rails2.0 开始控制台名称规则有少许变化。

错误信息显示:“首页有到 /account/show 的链接,但是出现错误或已损坏”。

但是,我不知道这条路径出现在首页的什么地方。

怎么做才好呢。

通常情况是启动应用程序后,用浏览器打开首页,获取源代码,但这里试一下 rak 吧。

rak 是用 Ruby 写的像 grep 一样的工具。

rak 通过 gem 安装。

> sudo gem install rak

rak 就是从某个目录下面的文件群中生成包含特定模式的行的列表。

找出含有 account 字符串的行的话,会发现有点特别的地方。

> rak account app/views
app/views/layouts/application.rhtml
  16|        <td id="account">
  17|          <%= render :partial => 'shared/account' %>

app/views/shared/_account.rhtml
   2|  <% unless params[:controller] == 'account' -%>
   4|          :controller => '/account', :action => 'show' %> |

太棒了!

Rak 将输出一个带颜色的容易分辨的结果。

但是,想在 Windows 表示颜色时,有必要通过 gem 安装 win32console 包。

app/views/shared/_account.rhtml 的 2-5 行做如下修改。

  <% unless params[:controller] == 'accounts' -%>
    <%= link_to @current_user.full_name + '帐户',
          :controller => '/accounts', :action => 'show' %> |
  <% end -%>

执行 test:integration 任务的话……

2 tests, 66 assertions, 0 failures, 0 errors

太完美了。

从下一章开始,为了使 asagao 更适应 rails2.2 ,让我们再一次看看源代码吧。

(2008/12/22)