2015-09-07 88 views
2

我跑的貝哈特測試一個小套間,在我的特點語境得到一個錯誤,哪一步。找到N是貝哈特

我可以看到,錯誤是由試圖deserialise無效JSON在我FeatureContext(json_decode())觸發。但是,我看不到它想要反序列化的字符串。

...................................................................... 70 
...................................................................... 140 
...................................................................... 210 
...................................................................... 280 
...................................................................... 350 
...................................................................... 420 
...................................................................... 490 
...................................................................... 560 
...................................................................... 630 
...................................................................... 700 
......................PHP Fatal error: Cannot access property started with '\0' in tests/Behat/FeatureContext.php on line 512 

我可以看到這是第722步。有沒有一種簡單的方法來獲取功能,並從那個行號?

我意識到我可以運行這個漂亮的格式,這將在這種情況下工作,但我的其他套件一些需要2個多小時才能運行。我想知道是否有更簡單的方法來做到這一點。

+0

可以前'json_decode記錄所有的字符串()',當你致命的,在日誌中的最後一個字符串是一個突破。 – umpirsky

+0

這是一個選項,但是與打開漂亮格式一樣,這需要重新運行測試。再次,在這種情況下,這很好,但我有其他測試需要2個小時才能運行,並且在這些測試中記錄每個響應將是不可行的。 – DanielM

+0

您可以grep輸出'PHP致命錯誤'並查看上面的行以過濾輸出。 – umpirsky

回答

1

似乎沒有辦法知道哪個步驟失敗,如果你沒有準備好你的測試套件。步驟也「乘」,但方案大綱箱子,這使得它更難寫任何哈克特點解析腳本僅計算了所有的步驟,因爲他們可能已經被貝哈特解析。

但對於未來,您可以使用與「方案之前」掛鉤登錄步內容與場景名稱「步驟之前」。這樣你應該把他們所有的名字都記錄下來。

+0

這可能是正確的答案,但我也不認爲按大綱示例數乘法步驟在解析功能時會增加很多工作,因爲場景中的步數實際上並未根據示例內容進行更改。在關閉此功能之前,我會支持其他想法。我**做**認爲每一步之前和之後的日誌記錄無論如何都可能是一個好主意,並會將其添加到我的FeatureContext中。 – DanielM

+0

您可能可以使用--dry-run選項來使用,或許可以通過編號或其他內容來清理該行。這個moght實際上可以節省你一些時間調試的時間;-)看到這個http://stackoverflow.com/q/29032687/1808052 –