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 中的列越多,这就会变得越乏味。
我有一个 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 中的列越多,这就会变得越乏味。