mor*_*man 0 ruby testing rspec ruby-on-rails mocking
我想知道有没有办法测试一个表达式:
var[:test] ||= "value"
Run Code Online (Sandbox Code Playgroud)
使用Rspec.基本上我希望能够指定类似的东西:
var = mock
var.should_receive(:[]||=).with(:test)
Run Code Online (Sandbox Code Playgroud)
更确切地说,我想测试它||=是否应用于var [:test].
谢谢.
该构造var[:test] ||= value本质上意味着:
if there is a key :test in hash
var[:test] should remain what it is
else
var[:test] = value
Run Code Online (Sandbox Code Playgroud)
这意味着你手上有两个测试,类似于:
it "should not override var[:test]"
it "should set var[:test] to be equal to 'value'"
Run Code Online (Sandbox Code Playgroud)
例如,假设您有一个类:
class Blah
attr_reader :var
def initialize(var={})
@var=var
end
def set_test_key(value)
var[:test] ||= "value"
end
end
Run Code Online (Sandbox Code Playgroud)
你可以这样做:
describe Blah do
it "should not override var[:test]" do
blah = Blah.new({:test=>"foo"})
blah.set_test_key("bar")
blah.should equal("foo")
end
it "should set var[:test] to be equal to 'bar'" do
blah = Blah.new
blah.set_test_key("bar")
blah.should equal("bar")
end
end
Run Code Online (Sandbox Code Playgroud)
这是它的要点,需要适应你的情况.
| 归档时间: |
|
| 查看次数: |
578 次 |
| 最近记录: |