首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >serverspec中的For循环

serverspec中的For循环
EN

Stack Overflow用户
提问于 2014-12-16 00:05:05
回答 2查看 1.2K关注 0票数 0

我有这个Spec文件:

代码语言:javascript
复制
require 'spec_helper'

for i in 1..3
   describe file ("/var/tmp/efl_test_0#{i}_link" )do
      it { should be_linked_to "/tmp/efl_test_0#{i}" }
   end
end

预期结果为:

代码语言:javascript
复制
   /var/tmp/efl_test01_link should be_linke_to /tmp/efl_test01
   /var/tmp/efl_test02_link should be_linke_to /tmp/efl_test02
   /var/tmp/efl_test03_link should be_linke_to /tmp/efl_test03

实际结果是:

代码语言:javascript
复制
 Failure/Error: it { should be_linked_to "/tmp/efl_test_0#{i}" }
   stat -c %N /var/tmp/efl_test_01_link | egrep -e "-> ./tmp/efl_test_03."
 Failure/Error: it { should be_linked_to "/tmp/efl_test_0#{i}" }
   stat -c %N /var/tmp/efl_test_02_link | egrep -e "-> ./tmp/efl_test_03."
 Failure/Error: it { should be_linked_to "/tmp/efl_test_0#{i}" }
   stat -c %N /var/tmp/efl_test_03_link | egrep -e "-> ./tmp/efl_test_03."

将每个链接与03目标进行比较。我想问题出在循环的某些方面。

我做错了什么?

EN

回答 2

Stack Overflow用户

发布于 2014-12-16 00:12:42

这可能是一个工件,说明i是如何被捕获为闭包的,并由describe稍后对其进行延迟计算。在这一点上,它是递增的。您可能需要故意捕获它:

代码语言:javascript
复制
for i in 1..3
  path = "/tmp/efl_test_0#{i}"
  describe file ("/var/tmp/efl_test_0#{i}_link" )do
    it { should be_linked_to path }
  end
end

通常情况下,您会使用3.times do来实现更传统的Ruby。for构造几乎从未使用过。

票数 2
EN

Stack Overflow用户

发布于 2014-12-16 01:00:06

这是可行的:

代码语言:javascript
复制
require 'spec_helper'

3.times do |i|
   describe file ("/var/tmp/efl_test_0#{i+1}_link" )do
      it { should be_linked_to "/tmp/efl_test_0#{i+1}" }
   end
end

结果:

代码语言:javascript
复制
    rspec ./spec/localhost/025_efl_test.rb:5 # 
File "/var/tmp/efl_test_01_link" should be linked to "/tmp/efl_test_01"
    rspec ./spec/localhost/025_efl_test.rb:5 # 
File "/var/tmp/efl_test_02_link" should be linked to "/tmp/efl_test_02"
    rspec ./spec/localhost/025_efl_test.rb:5 # 
File "/var/tmp/efl_test_03_link" should be linked to "/tmp/efl_test_03"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27488182

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档