2017-01-09 42 views
1

我正嘗試使用加特林,在這裏我只是想在第一個方案中的迭代執行一些步驟,在這裏我的代碼doIf不會話

def create(): ScenarioBuilder = { 
    scenario(name) 
     .exec(session => session.set("DEBUG", debug_set)) 
     .exec(session => session.set("client_id", session.userId)) 
     .doIf(session => session("initialized").asOption[String].isEmpty) { 
     exec(Identity.getIdentityToken) 
     exec(session => session.set("initialized", "true")) 
     } 
     .exitHereIfFailed 
     .during(Duration(15, MINUTES)) { 
     exec(X.setupVars) 
      .exec(X.create) 
      .pause(Duration(1, SECONDS)) 
      .exec(X.get) 
     } 
    } 
} 

不知怎的,第一次迭代,其中沒有定義的初始化工作it's它沒有到達那裏,因爲我沒有看到日誌執行其中一個步驟。

任何想法我做錯了什麼?

回答

10

一個點在你的doIf缺少第二exec

.doIf(session => session("initialized").asOption[String].isEmpty) { 
    exec(Identity.getIdentityToken) 
    .exec(session => session.set("initialized", "true")) 
} 

乾杯,
保羅以及:)
加特林隊

+0

感謝了很多!雖然加特林可以抱怨的錯過的點,而不是運行,而不是執行該塊 – paul

+0

加特林幾乎沒有辦法檢查這一點。你正在做的是放棄方法調用返回的值。 AFAIK,即使Java編譯器也不檢查這一點,只有像SonarQube這樣的靜態分析工具纔會發出一些警告。 –

+0

任何想法爲什麼現在它爲每個場景執行?我猜是因爲場景的範圍是每個用戶/場景。任何想法如何在用戶/場景之間共享這些會話值?每個場景我有100個用戶,我不想初始化100次。 – paul