首先,我使用的是Interactor Gem。 (你应该看看,如果你有没有很酷LIB)如何使用Minitest测试Interactor Organizer
比方说,我有一个交互器::主办单位如下:
class InitiateImport
include Interactor::Organizer
organize CreateImport, QueueImport
end
而且我也有两个交互件为如下:
class CreateImport
include Interactor
def call
import = Import.create()
if import
context.import = import
else
context.fail!(message: 'import failed!')
end
end
end
和
class QueueImport
include Interactor
def call
unless QueueHandler.perform_later(context.import.id)
context.fail!(message: 'Queue broke!')
end
end
end
大问题 - 如何 - 使用MINITEST - 测试organize
正在呼吁InitiateImport
与参数[CreateImport, QueueImport]
assert_send
会让我验证organize
被调用,但它不会让我确认我通过什么参数它。事情是这样的:
class InitiateImportTest < Minitest::Test
def test_organize_called
InitiateImport.new(file: file)
assert_send([InitiateImport, :organize, [CreateImport, QueueImport]])
end
end
我发现this问题/从近3年前的答案,但它并没有为我提供太多的清晰度。也许它在那里,我只是想念一些东西?
我也意识到,我可以只有call
组织者与有效的参数数据,以便它通过,我验证从那里的输出,但是我已经有这两个测试类,我基本上只是行使相同的功能两次。如果可能,我真的很想验证方法调用和参数。
任何帮助或建议将不胜感激。
嘿!我认为'间谍'可能会帮助你实现你正在寻找的东西,检查我的其他[答案](http://stackoverflow.com/questions/28813062/idiomatically-mock-openuri-open-uri-with-minitest/28878374 #28878374)。希望有所帮助! – 2015-04-02 12:54:53
谢谢!我会研究并报告。 – jamesconant 2015-04-02 12:57:23
是啊......这很长时间你应该关注的东西在第一个代码清单中用数字'(2)'和'(3)'标记。 – 2015-04-02 13:00:10