嘿,我第一次在rails中使用TDD ...有趣的概念。绝对有用。就是这样,直到我达到这个地步。当我运行我的测试时,我得到:
1) User should build the full name correctly
Failure/Error: @u1.fullname.to_s.should be("#{@attr[:firstname]} #{@attr[:lastname]}")
expected Joe Smith, got "Joe Smith"
# ./spec/models/user_spec.rb:35:in `block (2 levels) in <top (required)>'
# /home/brian/.rvm/gems/ruby-1.9.2-p0@seniorproject/gems/rspec-core-2.0.0.beta.18/lib/rspec/monkey/spork/test_framework/rspec.rb:4:in `run_tests'
# /home/brian/.rvm/gems/ruby-1.9.2-p0@seniorproject/gems/spork-0.8.4/lib/spork/run_strategy/forking.rb:13:in `block in run'
# /home/brian/.rvm/gems/ruby-1.9.2-p0@seniorproject/gems/spork-0.8.4/lib/spork/forker.rb:21:in `block in initialize'
# /home/brian/.rvm/gems/ruby-1.9.2-p0@seniorproject/gems/spork-0.8.4/lib/spork/forker.rb:18:in `fork'
# /home/brian/.rvm/gems/ruby-1.9.2-p0@seniorproject/gems/spork-0.8.4/lib/spork/forker.rb:18:in `initialize'
# /home/brian/.rvm/gems/ruby-1.9.2-p0@seniorproject/gems/spork-0.8.4/lib/spork/run_strategy/forking.rb:9:in `new'
# /home/brian/.rvm/gems/ruby-1.9.2-p0@seniorproject/gems/spork-0.8.4/lib/spork/run_strategy/forking.rb:9:in `run'
# /home/brian/.rvm/gems/ruby-1.9.2-p0@seniorproject/gems/spork-0.8.4/lib/spork/server.rb:47:in `run'其中,测试是:
it 'should build the full name correctly' do
@u1.fullname.should be("#{@attr[:firstname]} #{@attr[:lastname]}")
end支持代码是:
def fullname
"#{firstname} #{lastname}"
end显然这是可行的,但是引号是什么呢?我是不是漏掉了什么非常明显的东西?
发布于 2010-09-11 03:57:11
您的问题来自于您使用的是be而不是eql。be期望以您设置的方式(documentation)创建一个类。试着把你的规范写成
@u1.fullname.should eql("#{@attr[:firstname]} #{@attr[:lastname]}")Documentation for eql
另外,请注意eql与文档中直接位于其下的方法equal之间的区别。
https://stackoverflow.com/questions/3687807
复制相似问题