4

在 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 很好,但是这个,以及我使用调用和执行所做的其他尝试,都没有将选项传递给它。只是想知道是否有人对如何做到这一点有任何见解。谢谢!

4

1 回答 1

4

传递给该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'
于 2013-10-19T01:31:29.207 回答