我正在开发一个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
答案 0 :(得分:1)
你可以替换
$parser = new RequestParser(clone $this->baseRequest);
用这个:
$parser = $this->requestParserFactory->createFromBaseRequest(clone $this->baseRequest);
然后注入一个RequestParserFactory,然后你可以在规范中模拟它。