【发布时间】:2015-07-12 11:11:15
【问题描述】:
我正在开发一个 HTTP 服务器,我第一次决定用 PHPSpec 编写 tests 规范,这很棒。
我有两个规格类:spec\AppSpec 和 spec\RequestParserSpec。
由于App 是服务器组件和外部世界之间的接口,它使用RequestParser 来解析请求。因此,为了让 AppSpec 中的规范通过,必须先运行 RequestParserSpec 以检查请求解析是否正常。
这是问题所在:$ phpspec run 在 AppSpec 之前运行,然后是 RequestParserSpec。
是否可以颠倒该顺序?目前,如果RequestParser 有问题,AppSpec 将失败,而不知道根本问题是什么。
是的,我知道我可以做phpspec run tests/spec/RequestParserSpec.php,然后是其他人,但如果这可以自动化地一次性运行测试会更实用。
suites:
myapp_suite:
namespace: MyApp
psr4_prefix: MyApp
spec_path: tests
【问题讨论】:
-
你能用这两个类和两个规范的代码更新问题吗?
-
以下是规格:pastebin.com/5jQk5Rms 和 pastebin.com/7nTJ3VbE。您为什么对来源感兴趣?
-
抱歉,我看到 Pastebin 破坏了我在 AppSpec 上的缩进,有些行移位了...
-
尝试帮助您了解如何规范它们。要求一个规范在另一个规范之前运行意味着您可能没有模拟/存根
RequestParser。 -
哦,是的,完全正确。这是我第一次编写测试,所以我不习惯不同的现有技术和实践。
RequestParser是EventEmitter(模拟无法处理此问题),并且代码的构建方式无法让我轻松模拟模拟(例如,通过在RequestParser上直接调用emit()。)。你觉得这段代码怎么样? pastebin.com/iZcDMkd6