utPL/Sql 测试 table 的内容

utPL/Sql testing contents of a table

我有一个 table 这样的:

colors
----- 
red 
green 
blue

除了为每条记录编写 utAssert.eqqueryvalue(...) 之外,是否有其他方法可以对这些记录的存在进行单元测试?

如果您需要复杂的解决方案 - 您可以将逗号分隔值数组传递给查询并检查所有值是否存在于您的 table 如果在 returns 以下查询某事 - 这意味着测试失败

SELECT EXTRACT (VALUE (d), '//row/text()').getstringval () as test_val
  FROM (SELECT XMLTYPE (   '<rows><row>'
                        || REPLACE ('red,green,blue', ',', '</row><row>')
                        || '</row></rows>'
                       ) AS xmlval
          FROM DUAL) x,
       TABLE (XMLSEQUENCE (EXTRACT (x.xmlval, '/rows/row'))) d
except
select colors from my_table

一个选项是在测试夹具中构建一个具有预期结果的测试table,并使用utAssert.eqTable() 来验证运行 被测代码的结果。 Find out more.

需要创建堆 tables 来比较是不幸的。它给 Setup() 带来了压力并且需要事务管理。理想情况下,我们希望在集合中有比较值,但是没有 utAssert 接口来比较集合和 table。但是你可以 build your own

或者这样做:

utassert.eqquery (
  'Insert three colourns',
  'select * from YOUR_TABLE',
  'select ''red'' as colour from dual union all
   select ''green'' as colour from dual union all
   select ''blue'' as colour from dual'
);

唉,你的 table 中的列越多,这就会变得越乏味。