1

当我直接从黄瓜的 Given/When/Then 语句打印输出时,它会以漂亮的蓝色文本打印,但是如果我调用任何其他函数并在其中打印,它会以红色打印(而不是缩进)

样品特点:

Feature: Foo
  Scenario: Foo2
    Given something
    Then something else

示例 step_def:

Given /^something$/ do
  puts "Pretty blue"
end

class AnyClass
  def doSomething
    puts "Scary red"
  end
end

Then /^something else$/ do
  AnyClass.new.doSomething
end

在下面的示例输出中,“Scary red”是红色的,根本没有缩进,实际上是在黄瓜步骤之前打印的(“Then”子句)。“Pretty blue”为蓝色,适当缩进,在黄瓜步骤后输出。

Feature: Foo

  Scenario: Foo2
    Given something
      Pretty blue
Scary red
    Then something else

1 scenario (1 passed)
2 steps (2 passed)
0m0.001s

我是 Ruby & cucumber 的新手,所以我什至不肯定这些是这个问题的合适标签。有没有办法让其他类中调用的方法的输出与漂亮的格式相匹配?

编辑:更多的搜索表明,步骤中的 put 处理方式与其他函数(从其他格式化程序中排除)的 put 处理方式不同(例如,如果格式不同,则包含它们)。所以也许问题是,Ruby 如何从步骤中截取 put?我怀疑他们正在实施自己的 put,这是 step 课程的一部分。

4

1 回答 1

0

在为黄瓜步骤编写语法时,黄瓜已被覆盖(语法)要着色和缓冲。颜色取决于步骤是否通过,并且缓冲发生是因为它不会在所有内容运行之前为输出着色(因此它知道要打印哪种颜色)。

从语法步骤中传递 self 并调用对象 puts 得到我所追求的行为。

红色是我默认字体颜色的副作用。

IE:

After /Some Condition/ do
   some_object.test_something(self)
end

class SomeObject
   def test_something(obj)
      obj.puts "SomeText"
   end
end
于 2013-03-25T19:00:35.533 回答