测试 新手提问 rspec + guard + spork

匿名 · 2013年07月19日 · 最后由 ywjno 回复于 2013年07月20日 · 3061 次阅读

刚刚接触 rails 的测试,rspec + guard +spork 也能够跑起来了。但是有很多奇怪的地方我不太清楚。情况是这样的 我新建了一个集成测试文件 guest_can_see_topics_spec.rb 文件

require 'spec_helper'

describe "GuestCanSeeTopics" do
    it 'guest visit /topics can view all topics' do
        visit '/topics'
        page.should have_content 'haha'
    end
end

在启动 guard 以后的确会报错

Failure/Error: visit '/topics'
     ActionController::RoutingError:
       No route matches [GET] "/topics"

于是,在 routes 里面添加如下 resources :topics, :only => [:index] 这个时候显示只是 Running: spec/routing 然后 0 examples, 0 failures 按了回车以后,还是报这样的错误。哪里出问题了

重启下 spork 试试。如果重启 OK 的话,在 Guardfile 里加下规则,当 config/routes.rb 被修改,重启 spork

匿名 #2 2013年07月19日

我是用 guard 命令直接启动 guard 跟 spork 的。在 Guardfile 中加了规则,但是还是不行

匿名 #3 2013年07月19日

又遇到问题了,在这个情况下,我明明只有一个 guest_can_see_topics_spec.rb 文件,其他什么 model、controller 都没有的。在 routes 中添加 resources :topics, :only => [:index] 不是也要报出没有相关的 controller 的么。。。@saberma

这个时候显示只是 Running: spec/routing 然后 0 examples, 0 failures

你的 guest_can_see_topics_spec.rb 是放在哪个目录的?一般是放在 spec/features/ 目录下的,怎么会显示 Running: spec/routing

先抛开 SporkGuard,你直接运行 bundle exec rsepc spec 是什么情况呢?

我之前遇到的这种问题是因为 capybara 的版本问题,后来把 capybara 改为 1.1.2 这个版本就可以了,不知道对你有没有帮助……

匿名 #6 2013年07月19日

#4 楼 @saberma 执行了 bundle exec rsepc spec 现在又正常了,搞不懂... ... 我之前并没有执行这个 command,配置好了 上来就执行 guard 命令。

我已经不用 spork 了,改用 zeus 只是现在 zeus 自动运行的显示还有点问题

刚开始觉得这玩意太酷,用过发现还是手动好。。

#8 楼 @sanye 为什么手动好呢?

#9 楼 @blacktulip

手动我用 Sublime Text 的插件:RubyTest。可以针对某一个测试,或者一个测试文件中所有的测试做测试,用快捷键,非常方便。

spork+guard,用过两天,不爽的地方有二:

  1. 他是全局的测试,你随便一个小改动都要把全局的测试跑一遍,测试多了,这个速度。。
  2. 有时候你的改动让 guard 或者 spork 的 server 挂掉了,但是你还不知道。需要手动去重启 guard。

#10 楼 @sanye 可以设成改了那个文件就运行相应的测试的啊

匿名 #12 2013年07月20日

#11 楼 @blacktulip 怎么改 我也不知道诶

#9 楼 @blacktulip 让我想起车分自动档跟手动档,偏爱手动档是更喜欢操控性

需要 登录 后方可回复, 如果你还没有账号请 注册新账号