2015-09-07 41 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 –