0

所以我有一个查询:

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。所以我的结论是,如果我有一个使用视图的查询,它就不能被完全测试。

这是真的?无论如何,测试此查询的最佳方法是什么?

请记住,这是一个工作项目,我无法更改表的架构或查询本身,我必须针对实际数据库运行测试。

4

1 回答 1

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')
于 2013-08-01T21:05:48.530 回答