rspec-rails(3.7.0)でjruby(9.1.12.0)を使用しています。動的に生成されるモッキングオブジェクト+ rspec-mock
私は次のような方法
class AddressCreator
include Singleton
attr_reader :client
def initialize
@client = SomeJavaClass.new(some keys go here)
end
end
# SomeJavaClass has an create_address instance method.
def create_address(user_id, address)
req = Java::RandomRequest.new(user_id, address)
resp = Java::RandomResponse.new(default_response_params)
AddressCreator.instance.client.create_address(some_key, req, resp)
end
を持っており、
describe '#create_address' do
let(:some_key) { SecureRandom.uuid }
let(:user_id) { 1 }
let(:default_response_params) { false }
let(:address) { 'some address goes here' }
let(:request) { Java::RandomRequest.new(address)}
let(:response) { Java::RandomResponse.new(default_response_params)}
before {allow(AddressCreator.instance.client).to receive(:create_address).with(some_key, request, response).and_return(response)}
it 'should create the address' do
result = AddressCreator.instance.client.create_address some_key
expect(AddressCreator.singleton).to have_received(:create_address).with(some_key, request, response) do |request|
expect(request.is_success).to eq(response.is_success)
end
expect(result).to eq(response)
end
end
は私のスペックは、私たちが、我々をあざけりにはどうすればよい
expected <Java::RandomRequest:0x1d09fb8e>
got <Java::RandomRequest:0x38482732>
を述べ失敗するのと同じのためのテストを追加しました同じインスタンスを受け取りましたか?