1

我正在开发一个 PHP(Zend Framework 1.12.1)应用程序,该应用程序以某种独特的方式连接到数据库。

基本上,我们有一个对我来说是一个“黑匣子”的 Oracle 数据库。我没有权限直接选择、更新、插入或删除任何行或表。我只能访问数据库视图(仅限选择),当我想插入/更新/删除数据时,我必须调用一个或多个存储过程。我不知道实际的表结构是什么,而且我认为任何时候都不会有人给我访问权限。

所有这一切都使得对我的模型进行单元测试非常困难(更不用说编写它们了),因为 ZF 似乎假设您的应用程序在数据库中拥有完全权限。(这就是为什么我到目前为止只对我的模型进行了手动测试,而且我的模型有些不寻常。)

我的应用程序有效,但我厌倦了手动测试。

以前有没有其他人遇到过这种情况?您能否推荐在数据库权限有限的环境中实现自动化 PHPUnit 测试的具体步骤?我已经要求 db 管理员给我一个resetTestData()名为/ 或拆除。显然,在每次测试之前Zend_Test_PHPUnit_DatabaseTestCase尝试truncate数据集,然后调用getDataSet()以获取数据并重新填充数据库。解决问题?

4

2 回答 2

1

3 种不同类型的测试: - 单元测试(使用模拟等的低级测试) - 集成测试(使用真实数据源的低级测试) - 端到端测试(通过浏览器)

要么在不需要数据库的地方使用模拟,要么使用selenium进行端到端测试,这将驱动浏览器作为用户

于 2013-06-03T12:22:59.900 回答
0

创建一个可测试的应用程序并不是那么容易。

你有不同类型的测试,如果你使用单元测试,你永远不应该调用 db、webservices,甚至是文件系统资源。所有这些东西都必须被嘲笑。我知道这很难,但如果你不能,你就会有代码气味。

但是,如果您仍然需要访问数据库,您可以创建自己的测试环境,当您放置本地 Oracle 数据库时,您可以根据需要处理权限。

您可以为您的系统创建一个 APPLICATION_ENV,因为您可以在运行测试时读取特定配置,仅用于使用本地连接而不是 QA(例如)连接。

于 2013-01-25T14:34:21.340 回答