Решил проблему, но, как мне кажется, очень и очень топорно, наверное можно лучше.
Класс инициализируется три раза с тремя разными параметрами.
Получилось так:
api1 = Api.new('param1')
api2 = Api.new('param2')
api_default = Api.new
allow(Api).to receive(:new).with(no_args).and_return(api_default)
allow(Api).to receive(:new).with('param1').and_return(api1)
allow(Api).to receive(:new).with('param2').and_return(api2)
expect(api_default).to receive(:func2).once
Напрягает то, что проверяю я только default инстанс, а описать пришлось все.