0

'重量转换器'

试图掌握使用存根的窍门,但我无法获得正确的格式,我有什么问题?我知道在这种情况下我已经在代码中使用了该方法,但我正在尝试学习如何正确执行存根。

测试:

describe "Convert Pounds to Kilograms" do

it "should convert 3lb to 1kg" do
  weight = WeightConverter.stub!(:convert).with(3, 'lbs_to_kgs').and_return(1)
  weight.should == 1
end

代码:

class WeightConverter

  def self.convert(from, what_to_what)
    if what_to_what == 'lbs_to_kgs'
      (from / 2.2).truncate
    elsif what_to_what == 'kgs_to_lbs'
      (from * 2.2).truncate
    end
  end
end

仅供参考 - 这有效(没有存根)

  it "should convert 91lbs to 41kgs" do
    weight = WeightConverter.convert(91, 'lbs_to_kgs')
    weight.should == 41
  end

错误:

失败:

 1) Convert Pounds to Kilograms should convert 3lb to 1kg
     Failure/Error: weight.should == 1
       expected: 1
            got: #<Proc:0x000000010b0468@/home/durrantm/.rvm/gems/ruby-1.9.3-p125/gems/rspec-mocks-2.10.1/lib/rspec/mocks/message_expectation.rb:459 (lambda)> (using ==)
     # ./weight_converter_spec.rb:19:in `block (2 levels) in <top (required)>'

Finished in 0.00513 seconds
7 examples, 1 failure

盒子周围的玻璃(不透明/透明)边框?

我想知道是否可以在 CSS 中的框周围获得一种玻璃效果边框。例如,一个div包含ul等的导航。这是我的意思的一个例子

4

1 回答 1

2

您不想分配给存根,而是应该执行以下操作:

it "should convert 3lb to 1kg" do
  WeightConverter.stub!(:convert).with(3, 'lbs_to_kgs').and_return(1)
  weight = WeightConverter.convert(3, 'lbs_to_kgs')
  weight.should == 1
end

然而,这是一个相当无用的测试——它唯一测试的是你的存根/模拟库做了它应该做的事情(即它实际上根本没有测试 WeightConverter)。由于您直接测试 WeightConverter 的内部结构,因此您不需要对它进行存根。您应该使用第二个示例中的实际值。但是,如果 WeightConverter 依赖于另一个类,您可能会存根该其他类。

于 2012-05-13T23:49:48.010 回答