【问题标题】:Testing a rake task with passed parameters in rspec在 rspec 中使用传递的参数测试 rake 任务
【发布时间】:2013-10-18 15:28:26
【问题描述】:

在 rspec 中,我想测试一个传入一些参数的 rake 任务,所以在命令行中你会运行这个:

rake commissions:create_price_points options=1,2,3

在 rake 任务中我使用 ENV['options']。

在我的 rspec 我有

rake = get_rake_environment(RAKE_FILE)
rake["commissions:create_price_points"].invoke(options=1,2,3)

这可以很好地运行 rake,但是这个以及我使用调用和执行所做的其他尝试都没有将选项传递给它。只是想知道是否有人对如何做到这一点有任何见解。谢谢!

【问题讨论】:

  • 为 rake 任务使用环境变量不是默认方式。您可以像 rake Commissions:create_price_points[1,2,3] 一样直接将其添加到 rake 调用中,请阅读文档。

标签: ruby-on-rails ruby rspec rake


【解决方案1】:

传递给invoke 方法的参数与在rake 命令行中传递的参数不同。在 RSpec(即 Ruby)中,表达式 options=1,2,3 将数组 [1,2,3] 分配给局部变量 options 并将该数组传递给 invoke。当invoke 方法接收到该数组时,该数组被视为 rake 任务的正式参数。 (有关此方法的更多信息,请参阅https://stackoverflow.com/a/825832/1008891。)

由于您的 rake 任务需要设置环境变量 options,因此您需要在调用它之前进行设置,如下所示:

ENV['options'] = '1,2,3'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-29
    • 1970-01-01
    • 2014-09-06
    • 2017-09-24
    • 2011-10-17
    • 1970-01-01
    • 1970-01-01
    • 2011-02-06
    相关资源
    最近更新 更多