如何在cakePHP和Simpletest中执行复杂的搜索并测试它们

时间:2011-02-11 08:36:09

标签: unit-testing cakephp cakephp-1.3 simpletest

我有一个非常复杂的数据结构,比如没有连接表的10个表。我的应用程序需要能够在大多数表中执行搜索。

为此,我将搜索字段的内容转换为一系列条件。关键是型号名称,值是搜索条件,即

$conditions = array(
        'Artist' => array(
                'OR' => array(
                    'Artist.name LIKE' => '%barl%', 
                    'Pseudonym.name LIKE' => '%barl%'
                    )
                ),
        'Content' => array('Content.subject' => 'architecture'),
        'Editor'  => array('Editor.name LIKE' => '%Gal%'),
        etc....
    )

此数组将传递给可搜索的模型,每个模型都采用相关的条件。

$this->find('all', array('conditions' => $conditions['Artist']))

到目前为止,至少我认为这么好。现在我开始测试模型,我发现自己在不同的模型测试用例中一遍又一遍地复制相同的数组,这让我感到困扰。

有没有办法让每个测试用例都能访问这个数组?也许数组不是最好的解决方案,我应该建立一个搜索模型?

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

将数组作为属性放在app_model.php中,类似于$ commonSearchConditions,并从模型内部访问它们,这些模型应该继承AppModel。

根据您的具体操作,如果每个模型的搜索不同,我会在每个模型测试中都有一个测试用例。如果不是,您可能希望使用您在测试内部创建的测试模型创建单独的测试,以便仅测试您想要执行的搜索工作。很难说不知道更多。