Я новичок в RPSEC.Как насмехать метод смещения с использованием RSPEC?
У меня есть метод с именем _apply_offset
. Она содержание следующим образом-
def _apply_offset(campaign_params)
if campaign_params['adsets'].length <= 0
return campaign_params
end
## offset
offset = Facebook::Currency.new(current_advertiser).offset
puts "offset = "+offset.to_s
campaign_params['adsets'].each do |adset|
# lifetime_budget,daily_budget
if adset['budget']['value']
adset['budget']['value'] = (adset['budget']['value'] * offset).round
end
next if(adset['bid']['method'] == 'OCPM')
if adset['bid']['value']
adset['bid']['value'] = (adset['bid']['value'] * offset).round
end
end
return campaign_params
конец Как вы можете видеть в приведенном выше коде я называю Facebook::Currency.new(current_advertiser).offset
Я хочу, чтобы значение этой функции для возврата 100.
Смещение функции выглядит следующим образом:
def offset
currency = M_FACEBOOK_CURRENCIES['JPY']
currency = M_FACEBOOK_CURRENCIES[@facebook_information.currency] unless @facebook_information.currency.nil?
return currency[:offset]
end
мой код RSPEC выглядит цены ниже
describe "#_apply_offset" do
let(:current_user) { User.find(10) }
let(:current_advertiser) { Advertiser.find(4) }
let(:campaign_params) {
{
'adsets' => []
}
}
before do
allow(controller).to receive(:current_user).and_return(current_user)
allow(controller).to receive(:current_advertiser).and_return(current_advertiser)
end
subject { controller.send(:_apply_offset, campaign_params) }
context "CPC/CPM params" do
let(:campaign_params) {
{
'adsets' => [
{
'budget' => {
'value' => 1000
},
'bid' => {
'value' => 1000
}
},
]
}
}
describe "budget value" do
it "offset budget value and round" do
expect(subject['adsets'][0]['budget']['value']).to eq(1000)
end
end
describe "bid value" do
it "offset bid value and round" do
expect(subject['adsets'][0]['bid']['value']).to eq(1000)
end
end
end
context "OCPM params" do
let(:campaign_params) {
{
'adsets' => [
{
'budget' => {
'value' => 1000
},
'bid' => {
'method' => 'OCPM',
'value' => ''
}
},
]
}
}
describe "method = OCPM" do
it "expects round method doesn't execute" do
expect(subject['adsets'][0]['bid']['value']).to eq('')
end
end
end
конца
В до того крюка я попытался allow(Facebook::Currency).to receive(:offset).and return)(100)
, но он не работает.
ли вы попробовать 'allow_any_instance_of (Facebook :: Currency). ... '? – Ninigi
нет ... Я не знаю об этом .. Как это использовать? – RajSharma