【问题标题】:Validating errors with Cucumber使用 Cucumber 验证错误
【发布时间】:2012-02-13 06:24:22
【问题描述】:

所以我有以下方法,预计会加载一个文件。

class Loader
    def load_file(file_to_load)  
        if not FileTest.exists?(file_to_load)
          raise "File Does Not Exist"
        end
    end
end  

我正在使用 Cucumber 来验证这项工作,并且我正在使用以下步骤定义:

Given an import file doesn't exist
When a user runs the loader
Then the import fails

“When”步骤的步骤定义如下所示:

When /^a user runs the loaderd$/ do
   @loader = MovieLoader.new
   @loader.load_file
end

Then /^the import fails%/

end

但是,由于异常是在 When 步骤中作为 load_file 方法调用的一部分引发的,我如何在“Then”步骤中对其进行验证。

有人可以帮忙吗?

【问题讨论】:

    标签: ruby-on-rails ruby testing cucumber bdd


    【解决方案1】:

    在when步骤中捕获错误并验证错误存在于then步骤中。

    我不做 ruby​​,所以我不知道语法,但基本上你想要这样的伪代码:

    When /^a user runs the loaderd$/ do
       @loader = MovieLoader.new
       try
          @loader.load_file
       catch
          error = "load failed"
    end
    
    Then /^the import fails%/
        if (error != "load failed")
            raise "expected error was not raised"
    end
    

    【讨论】:

      【解决方案2】:

      将@loader.load_file 放在then 步骤中。

      【讨论】:

      • 在这种情况下,步骤的逻辑将丢失。
      • @p0deje - 我宁愿提供不同的解决方案而不是降级
      • 如果我有一个,我肯定会给。这就是为什么我 +1 问题(这是相当复杂的情况)和 -1 你的答案(它不能解决它)
      • 谢谢大家。我想验证一个错误并不是一件令人发指的事情,它应该是可行的,而无需重新安排步骤的逻辑。
      • 为什么不在 then 步骤中使用 @loader.load_file.should_raise "File Does Not Exist"?
      猜你喜欢
      • 2016-12-03
      • 2019-04-30
      • 2011-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-11
      • 2019-05-06
      • 1970-01-01
      相关资源
      最近更新 更多