当前位置:  开发笔记 > 编程语言 > 正文

如何开始测试Zend Framework模型?

如何解决《如何开始测试ZendFramework模型?》经验,为你挑选了1个好方法。

如何在Zend Framework 1.8+应用程序中开始测试我的模型?

假设我已将我的应用程序设置为开始测试.我已经测试了一个控制器,所以我知道它有效.我有我的所有控制器扩展我的ControllerTestCase.php文件:

application = new Zend_Application(
            APPLICATION_ENV,
            APPLICATION_PATH . '/configs/application.ini'
        );

        $this->bootstrap = array($this, 'appBootstrap');
        parent::setUp();
    }

    public function appBootstrap()
    {
        $this->application->bootstrap();
    }

    public function tearDown()
    {
        Zend_Controller_Front::getInstance()->resetInstance();

        $this->resetRequest();
        $this->resetResponse();

        $this->request->setPost(array());
        $this->request->setQuery(array());
        parent::tearDown();
    }
}

但现在我想开始测试我的模型.似乎我ModelTestCase.php不会延伸Zend_Test_PHPUnit_ControllerTestCase而是延伸Zend_Test_PHPUnit_ModelTestCase,但是我知道不存在这样的类.如何开始测试我的Zend Framework模型?



1> Bill Karwin..:

ControllerTestCase为您提供了一个基础,因为设置和拆除环境以测试控制器需要复杂的步骤.输入是模拟HTTP请求,输出呈现HTML,您需要抓取以查找预期内容.

Model更像是一个普通的旧PHP对象.设置的环境较少.接口只是对对象的方法调用.

所以我将启动一个TestCase扩展PHPUnit的简单类TestCase,并首先为Model类中的每个方法添加至少一个test方法(作为空函数).最终,您的Model类中的每个方法都有许多测试方法,但创建空测试方法是避免忘记某些Model方法的好方法.

请注意,Model不是表 - 模型通常使用一个或多个Table对象.通过遵循此模式,您可以为Tables 创建模拟对象,这样您就可以运行测试套件而无需实时连接到数据库.

下面是设置模拟Table对象的示例,该对象被硬编码以从数据库返回合成数据集而不是数据集.

getMock('FooTable', array('find'));
    $foo->expects($this->any())
        ->method('find')
        ->will($this->returnValue(array("id"=>"123")));

    $this->_model = new MyModel();
    $this->_model->setFooTable($foo);
  }

  public function testCountElements()
  {
    $this->_model->get(123);
    $n = $this->_model->countElements();
    $this->assertEquals(1, $n);
  }

  public function testAsArray()
  {
    $this->_model->get(123);
    $a = $this->_model->asArray();
    $this->assertType('array', $a);
  }

  public function testAddElement()
  {
    // ...etc.
  }

  public function testGetElement()
  {
    // ...etc.
  }

}

推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有