我們都知道可以用如下方法mock乙個方法的呼叫並返回我們需要的值。
when
(function
(any()
)).thenreturn
(null)
但是如果遇到如下的級聯呼叫的方法怎麼辦呢?
suffix = redis.
opsforvalue()
.increment
(prefix,
1l);
這時候我們可以先mock出乙個 redis.opsforvalue() 返回的物件,如下:
@mock
valueoperations
valueoperations;
然後可以在設定方法裡面將這個物件作為 redis.opsforvalue() 的返回。因為 redis 在多個方法裡面都會使用到,所以我放在了 @before 註解的方法裡,當然直接放在測試方法裡也是可以的。
@before
public
void
setup()
接下來的事情就簡單了,我們可以在測試方法裡直接操縱這個物件來 mock 我們需要的方法,如下:
when
(valueoperations.
increment
(anystring()
,anylong()
)).thenreturn
(10000l)
;
其實就是要懂得利用 junit 進行測試的本質就是不斷創造出我們測試所需要的東西。 R語言中呼叫windows中的字型方法
windowsfonts a windowsfont 華文彩雲 這裡使用的是字型的主題名稱 b windowsfont 華文仿宋 c windowsfont 華文行楷 d windowsfont 華文楷體 e windowsfont 華文隸書 f windowsfont 華文中宋 g windows...
如何在tornado中以非同步的方式呼叫同步函式
tornado相較於flask入門難,精通更難,用兩種框架都寫乙個最簡單的帶有time.sleep的入門dome就會發現區別,同時進來多個請求flask就不會阻塞 雖然也是單程序但flask會使用selet復用或者多執行緒方式避免給請求阻塞的感覺 而torndao就會發生阻塞 單程序單執行緒,乙個乙...
如何在 JSON 物件中呼叫陣列的方法
下面的 輸出結果是 let obj obj.push 1 obj.push 2 console.log obj 分析 obj是乙個物件裡面有四個屬性,包括push 方法,正常情況下物件是沒有push 方法的,那麼push 方法做什麼?或者怎麼實現乙個 push 方法?如下 實現簡易版 push 方法...