2
我有大意如下的東西在我spec
文件之一:如何在rspec期望保存一個變量?
expect(my_instance).to receive(:my_function).with(arg: instance_of(String))
我希望能夠捕捉到的arg
實際值的變量我可以在規範使用。有沒有辦法做到這一點?我檢查了rspec文檔,但沒有找到類似的東西。
我有大意如下的東西在我spec
文件之一:如何在rspec期望保存一個變量?
expect(my_instance).to receive(:my_function).with(arg: instance_of(String))
我希望能夠捕捉到的arg
實際值的變量我可以在規範使用。有沒有辦法做到這一點?我檢查了rspec文檔,但沒有找到類似的東西。
你可以聲明變量,說captured_arg
的expect
之前(或allow
,如果你不希望它如果my_instance
沒有收到my_function
失敗)。然後您可以收集塊中的參數並在該塊內設置captured_arg
。
captured_arg = nil
expect(my_instance).to receive(:my_function) { |arg| captured_arg = arg }
編輯:(關鍵參數)
如果使用keyword arguments,只需修改上面的腳本咯,使用arg
作爲關鍵字參數,你想拍攝:
captured_arg = nil
expect(my_instance).to receive(:my_function) { |args| captured_arg = args[:arg] }