我的环境:
jruby-1.5.3
Rails 2.3.8
RSpec 1.3.1
Windows 7 (64-bit machine)
使用以下源代码运行Rspec,为什么rspec读取标有“=>”的行?这是语句before(:each)
之前的上下文。任何帮助非常感谢
def save_env @host_os = Config::CONFIG['host_os'] end def restore_env Config::CONFIG['host_os'] = @host_os end describe Manager::ManagerConfig do before(:each) do save_env end after(:each) do restore_env end context "Within Linus/Solaris environment" do => Config::CONFIG['host_os'] = 'linux' it "should return the correct manager path under linux/solaris" do # bar end it "should return the correct license path under windows env" do # foo end end end
答案 0 :(得分:3)
一个上下文设置了一个内部类,因此其中的行将在加载时执行,除了每个it
,before
和after
创建一个代码块这将在稍后执行。
您需要做的就是将配置设置包装在自己的before(:each)
块中,顺序将是您所期望的:外部before(:each)
,然后内部before(:each)
,然后it
:
before(:each) do
Config::CONFIG['host_os'] = 'linux'
end