新手问题 RSpec 到底好用在哪?

hhuai · 2012年07月22日 · 最后由 heliang7 回复于 2012年07月30日 · 7105 次阅读

我发现大部分的文章都是从 rspec 开写,新建项目就直接跳过测试,直接安装 rspec. 然后支持的工具也多,textmate spork guard 都有很好的支持。

这不,为了加快开始项目的速度,懒得用 rspec 了,直接用了 rails 自带的 unit test, 发现写起来挺带劲啊,对比看英文语法,我更喜欢看 def assert, 还有 textmate 自带的支持也太棒了。

至于 rspec 的 shared example, 我在 test_helper 中直接写几个类宏就搞定了,可以根据自己的需要灵活处理。

还有,factory_gril 到底好哪了,fixtures 就已经满足需求了,而且 yml 中还可以写 erb 语法,我够用了。

注,不是争论帖,新手请教帖,有体会到这两者好处的热心人出来讲讲。谢谢各位了。

用了 rspec+factory_girl 两年了,回来用 testunit+fixtures。发现那就是一个飞速啊,各种爽快,TDD 就应该马上能看到结果。

rspec 和 unit test 都用过,个人还是比较喜欢 unit test 的简洁,rspce 比较方便的是可以单独执行一个 spec 文件里面的一小段,而 unit test 没有找到对应的方法。

@bluecoda @hhuai 你们可能项目不太大,如果测试数据很多的时候 fixtures 就很容易让我们无法管理了。不支持回调,静态数据。这两个问题就足够让我们测试乱掉了。 rspec 的语法还是蛮流畅的,又支持subject ,它自带的 mock 也很好用。个人感觉 rspec 更 high 一些。

#4 楼 @lyfi2003 你提到的 fixtures 那些高级特性,我暂时还木有需求,有了再请教吧。 会不会是因为英语水平的关系,比如我看 it {should be_true}

assert(true) 我就觉得下面的写法,我读得更快,一下就理解过来了,上面的写法我就还需要头脑中英译汉一下。

用了这么多年后,已经不再倾赖 RSpec 了。速度慢(虽说最近几个版本快了些),版本变化大,越来越成了一个负担。

#3 楼 @Rei 我是指 rspec 可以直接在文件后面跟上 line number: rspec xxx_spec.rb:88

这样在第几行出错的时候,debug 之后,可以直接用这个行数重跑,而 unit test 还得回头去看这行对应的方法名

其实关于 unit test 跟 rspec 的争论一直就没有停过。DHH 对 rspec 是不太感冒的。我觉得他们各有各的好.对于大得项目用 fixture 的话,可能需要更多技巧了。看个人喜好吧

#5 楼 @hhuai 有 C/C++ 背景的开发者 有可能觉得 assert 的形式更易读。

很久不用 testunit 了,现在 rspec 的速度已接受 用 testunit 的人可以看一下我很久前写的 gem, https://github.com/allenwei/rt

rt test_file.rb #单个文件 rt test/*/test_.rb #多个文件 rt test/unit/ #一个目录 rt test_file.rb:5 #行号

#11 楼 @allenwei 这个 gem 不错,打算试试

FactoryGirl 用起来了,昨天做功能测试时,发现 Fixture 取不到属性,用 Girl 就很好。


test "should create ent_profile" do
  assert_difference('EntProfile.count') do
    post :create, ent: FactoryGirl.attributes_for(:ent_profile)
  end

  assert_redirected_to ent_path(assigns(:ent))
end

确实不错,打算替换 Fixture 了,虽然两者的侧重的概念不一样,但 fixture 的活 girl 都能干。

wooooo... 我的 unit test 切换到 rspec 了,spork,guard,textmate 对 rspec 支持更好,写了两小时,真的来感觉了,开始体会到 tdd 威力了,确实比我写几句再到流览器中看结果要快。。。

Yeah.

Cucumber 呢??

#15 楼 @n5ken Cucumber 看了就想吐。

@hhuai 有这么严重吗?可以写中文场景并且客户都能看懂感觉还好。

Cucumber 我觉得最大的好处是。。。QA 可以直接自己写 Test,或者 PM 也可以很容易理解是到底在做什么功能。

我挺喜欢 test/unit 的,反正也一直用 mocha,所以用不着 rspec 的 mock

先是写的 unit test,后来@hisea用的 rspec,就跟过去了。

  1. 速度来说,用 spork 的话,没太大的区别。
  2. shoulda+rspec 比较爽,不过很多老大都不建议测试 relationship
  3. 从 xUnit 过来的,assertion 看起来的确很习惯。但是 rspec 的感觉测试目的好像更清楚些。
需要 登录 后方可回复, 如果你还没有账号请 注册新账号