请问这个 phpunit 测试如何正确书写?

今天在学习 phpunit 中发现一个测试方式,但是不太明白其原理,这是一个测试不通过的测试类,请问我应该如何书写 testConsumer 方法,而让测试通过。

这里发生一个奇葩的事情,当我第一次测试时是通过的,第二次就报错了 (在 thinkphp 5.0 下),很奇怪。

<?php

namespace tests;

class QuestionTest extends TestCase
{

    public function provider()
    {
        return array(array('provider1'), array('provider2'));
    }

    public function testProducerFirst()
    {
        $this->assertTrue(true);
        return 'first';
    }

    public function testProducerSecond()
    {
        $this->assertTrue(true);
        return 'second';
    }

    /**
     * @depends      testProducerFirst
     * @depends      testProducerSecond
     * @dataProvider provider
     */
    public function testConsumer()
    {
        $this->assertEquals(
            array('provider1', 'first', 'second'),
            func_get_args()
        );
    }
}
阅读 1.6k
1 个回答

return array(array('provider1'), array('provider2'));
phpunit会根据参数调用两次testConsumer,分别传入参数

/**
     * @dataProvider provider
     * @depends      testProducerFirst
     * @depends      testProducerSecond
     */
    public function testConsumer($provider)
    {
        $this->assertEquals(
            array($provider, 'first', 'second'),
            func_get_args()
        );
    }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题