2013-11-22 114 views
1

我有很多使用固定装置的测试,这对于测试诸如“我是否从此方法获得正确数量的记录”以及类似的测试非常有用。CakePHP测试 - 实时导入记录

class CountryFixture extends CakeTestFixture { 
    public $import = array(
     'model' => 'Country', 
     'records' => false 
    ); 

    public $records = array(
     array('id' => '1','name' => 'Sweden', 'region_id' => '1'), 
     array('id' => '2','name' => 'Norway', 'region_id' => '1') 
    } 
} 

现在我想我想测试数据本身。例如,我想确保没有哪个国家出于某种原因失去了地区。然后我做一个新的夹具导入所有记录。

class CountryLiveFixture extends CakeTestFixture { 
    public $import = array(
     'model' => 'Country', 
     'records' => true 
    ); 
} 

这可以正常工作。但似乎没有必要创建第二个灯具。有什么方法可以在测试中随时设置导入记录吗?

回答

1

“我收到的记录的权利数量从这种方法背”

建议: 您应该测试业务逻辑,不是已经由框架进行测试。 如果你的查询是正确的,你为什么需要测试,如果你确实得到正确的计数?蛋糕已经为你做了。

+0

嗯,是的,但我没有测试框架,我正在测试数据。我的第一个例子的意思是,使用固定装置进行的测试对于getCustomersThatFullFillRequirement等测试方法很有用,您可以简单地看到记录的数量是正确的,而这是动态记录无法做到的。 事情是,我们有一个错误,源于一些国家没有region_id(在这个比喻)。所以我们认为,为什么不编写一个测试来查看数据,以确定我们不会再次遇到同样的错误。你看到我想要完成什么吗? –

+0

如果你的函数只有查询,你不需要真的测试它。你应该多关注你的查询吧?如果您在查询中添加了WHERE region_id IS NOT NULL,则除了灯具数据更改之外,您总能得到正确的结果。 –

+0

问题不在于自我测试。就像我说的那样,测试就像现在一样。问题是我需要有两个灯具。一个带有静态数据,即,我手动设置了几个帖子,另一个带有动态数据,即,我从数据库中导入所有记录。我的问题是,有没有什么方法可以只使用一个Fixture,并将一些测试的固定数据和其他测试的导入记录使用。 –