2017-09-29 36 views
4

我想寫使用Rails 5的測試和使用MINITEST這裏是我的測試代碼...爲什麼我的模擬不能在我最小的測試中使用?

@client = Coinbase::Wallet::Client.new(api_key: ENV['COINBASE_KEY'], api_secret: ENV['COINBASE_SECRET']) 
sell_price = 4000 
assert sell_price > last_buy_price * (1 + MoneyMakerThreshhold.find_buy.pct_change) 
@client.stub :sell_price, "USD" do 
    {"base"=>"BTC", "currency"=>"USD", "amount"=>"#{sell_price}"} 
end 

svc = CryptoCurrencyService.new 
svc.sell(last_transaction) 

但是當它esxecutes在下面的是什麼打印出不是「我嘲笑售價4000" ,它是由客戶端返回的實際售價...

def sell(last_transaction) 
    client = Coinbase::Wallet::Client.new(api_key: ENV['COINBASE_KEY'], api_secret: ENV['COINBASE_SECRET']) 
    sell_price = client.sell_price(currency: 'USD').amount 
    puts "buy: #{last_transaction.btc_price_in_usd} sellprice: #{sell_price} last:#{last_transaction.btc_price_in_usd}" 

如何讓我的模擬工作到東西?用於塊的持續時間

+0

你使用哪種版本coinbase-紅寶石? – Hirurg103

回答

0

Object#stub存根方法值,如文檔狀態

爲塊的持續時間添加一個臨時存根替換方法名稱。如果val_or_callable響應#call,則返回調用它的結果,否則按原樣返回值。清理塊末尾的存根。

回答你原來的問題:

client.stub :sell_price, {"base"=>"BTC", "currency"=>"USD", "amount"=>"#{sell_price}"} do 
    svc = CryptoCurrencyService.new 
    svc.sell(last_transaction) 
end 
+0

希望你得到這個評論,因爲我的反應有點遲。你是否用你提供的內容替換了我以「@ client.stub ...」開頭的代碼? – Dave

+0

@Dave是的。並把你的斷言和陳述放入該塊 – Hirurg103

相關問題