1

我使用此代码创建数据:

Method OnBeforeAllTests() As %Status
{
    // Create one MyClass row   
    Do ##class(MyClass).Populate(1)
    Quit $$$OK
}

这要删除数据:

Method OnAfterAllTests() As %Status
{
    Do ##class(MyClass).%KillExtent()
    Quit $$$OK
}

如何更改OnAfterAllTests为仅删除我使用填充的数据OnBeforeAllTests而不删除任何其他数据?

4

1 回答 1

2

唯一可能会自动跟踪您所做的事情并将其回滚的是事务。

除此之外,您需要自己跟踪它,或者只是不让您的单元测试实际创建数据。在生产系统中测试特定代码不是一个很好的做法,因此标志字段“testData”不是很好,但我想你可以。

我个人的解决方案是首先创建实际上不插入数据的测试,但这需要使用依赖注入并创建一个模拟框架以使编写单元测试变得可行。

一个更简单的解决方案可能是拥有一个跟踪所有数据更改并在最后回滚它们的对象,但可能仅使用事务会做得更好。

于 2012-10-29T16:59:47.287 回答