所以我有一个问题:
select
c.STRING,
a.STRING,
b.STRING,
b.STRING3,
a.STRING2,
from TABLE_A a,
VIEW_B b,
TABLE_C c
where b.STRING2 = a.STRING2
and a.INT = #value#
and c.INT = a.INT
and c.STRING IN ('string1', 'string2')
VIEW_B是视图,TABLE_A和TABLE_C是普通表。我正在尝试对此查询进行单元测试。我看到它的方式是因为它是一个选择,我需要制作一些虚拟数据,将其插入表中,然后运行上面的查询并确保它返回我输入的相同数据。但是,VIEW_B是一个查看,无法插入。所以我需要从VIEW_B中获取一些真实数据,并在其他2个表中获取相应的数据。但是,到那时我只是运行相同的查询,而且我必须抓住a.INT。所以我的结论是,如果我有一个使用视图的查询,它就无法完全测试。
这是真的吗?无论如何,测试此查询的最佳方法是什么?
请记住,这是一个工作项目,我无法更改表格或查询本身的架构,我必须针对实际数据库运行我的测试。
答案 0 :(得分:3)
为什么不为构成VIEW_B的任何表提供样本数据?
或者,将“VIEW_B”替换为内联实体声明:
(我使用了oracle特定的DUAL虚拟表,但使用适用于你的任何东西)
select
c.STRING,
a.STRING,
b.STRING,
b.STRING3,
a.STRING2
from TABLE_A a,
(select 'blah' string, 123 INT from dual) b,
TABLE_C c
where b.STRING2 = a.STRING2
and a.INT = #value#
and c.INT = a.INT
and c.STRING IN ('string1', 'string2')