在Rspec中测试传递参数的rake任务

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,但是使用invoke和execute等其他尝试都无法将选项传递进去。请问是否有人知道如何实现?谢谢!

在 Rake 任务中使用环境变量并不是默认的方式。你可以直接将其添加到 Rake 调用中,例如 rake commissions:create_price_points[1,2,3]。请查阅文档了解更多信息。 - phoet
1个回答

4
invoke方法传入的参数与在rake命令行中传入的参数不同。在Ruby中的RSpec中,表达式options=1,2,3将数组[1,2,3]赋值给局部变量options并将该数组传递给invoke。当invoke方法接收到该数组时,该数组被视为rake任务的形式参数。(有关此方法的更多信息,请参见https://dev59.com/DnRA5IYBdhLWcg3wyRJ7#825832)。
由于您的rake任务需要设置环境变量options,因此在调用它之前需要设置该变量,例如:
ENV['options'] = '1,2,3'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接