} ok($run); }); }); describe("after_each_hook", function () { it("should run after every test case", function () { $run = false; $this->config->reporter = new BaseReporter(); $this->config->after_each_hook = function () use(&$run) { $run = true; }; $old_config = Preview::$config; Preview::$config = $this->config; $exception_in_sample_code = null; try { $suite = new TestSuite("sample suite", function () { }); $suite->add(new TestCase("sample case", function () { })); $suite->run(); } catch (\Exception $e) { $exception_in_sample_code = $e; } Preview::$config = $old_config; if ($exception_in_sample_code) { throw $exception_in_sample_code; } ok($run); }); }); });
before(function () { $testsuite = new TestSuite("suite-title", null); $this->result = $testsuite->result; }); it_behaves_like("pending test result"); }); context("for finished testsuite", function () { before_each(function () { $old_config = Preview::$config; Preview::$config = new Configuration(); Preview::$config->reporter = new BaseReporter(); $testsuite = new TestSuite("suite-title-1", function () { }); $testsuite->set_parent(new TestSuite("suite-title-2", function () { })); $testsuite->run(); Preview::$config = $old_config; $this->testsuite = $testsuite; $this->result = $testsuite->result; }); it_behaves_like("finished test result"); context("when passed", function () { it_behaves_like("passed test result"); }); context("when failed", function () { before_each(function () { $this->testsuite->set_failure(new \Exception("failed")); }); it_behaves_like("failed test result"); }); context("when error occurred", function () {