我的应用程序具有以下架构:
如您所见,App1能够迁移Db1,而App2能够迁移Db2。App1仅访问Db2的视图my_view1和my_view2。在App1进行单元测试时,我如何使用模拟数据创建“假”视图,这些数据表示实际视图my_view1和my_view2。
my_view1
my_view2
mwkjh3gx1#
为了生成测试视图,您需要生成一个初始SQL脚本,该脚本将生成一个类似于视图的表,而视图将只是我们生成的表中的一个select *:
psql -U your_user your_database -c "CREATE TABLE my_view1_mock as select * FROM my_view_1"; pg_dump -U your_user your_database -t my_view1_mock --schema-only > mock_views.sql echo "CREATE OR REPLACE view my_view_1 as SELECT * FROM my_view1_mock" >> mock_views.sql psql -U your_user your_database -c "CREATE TABLE my_view2_mock as select * FROM my_view_2"; pg_dump -U your_user your_database -t my_view2_mock --schema-only >> mock_views.sql echo "CREATE OR REPLACE view my_view_2 as SELECT * FROM my_view2_mock" >> mock_views.sql
换句话说,我们制作了一个脚本mock_views.sql,它将创建伪视图。在工具的执行运行时运行实际测试之前,将从单元测试(如phpunit)工具中执行mock_views.sql。因此,还需要为Db 1和Db2初始化空测试数据库。测试数据需要填入表格my_view2_mock和my_view1_mock,才能显示在实际的视观表中。请记住,此方法会隐藏填入视观表的实际表格中的任何逻辑/数据填入。在使用phpunit的情况下,建议在setUp方法中执行sql脚本。
mock_views.sql
phpunit
my_view2_mock
my_view1_mock
setUp
1条答案
按热度按时间mwkjh3gx1#
为了生成测试视图,您需要生成一个初始SQL脚本,该脚本将生成一个类似于视图的表,而视图将只是我们生成的表中的一个select *:
换句话说,我们制作了一个脚本
mock_views.sql
,它将创建伪视图。在工具的执行运行时运行实际测试之前,将从单元测试(如phpunit
)工具中执行mock_views.sql
。因此,还需要为Db 1和Db2初始化空测试数据库。测试数据需要填入表格
my_view2_mock
和my_view1_mock
,才能显示在实际的视观表中。请记住,此方法会隐藏填入视观表的实际表格中的任何逻辑/数据填入。在使用phpunit的情况下,建议在
setUp
方法中执行sql脚本。