2012-12-02 18 views

回答

2

您可以使用close()方法在initMode设置为DropAllCreate之后为每个测试创建新实例,并释放所有实例的资源。

像下面的自定义函数可能会对你有所帮助:

def withDb (f : Instance =>()) { 
    val db = new Instance (..., initMode = InitMode.DropAllCreate) 
    f(db) 
    db.close() 
} 

使用它,它会很容易总是新鲜创建的实例的环境中工作:

withDb { db => 
    db.save(...) 
    db.query[...](...) 
} 
+1

将有一个明确的方法来删除和重新加载表,而无需再次建立连接... – Eduardo

2

我解决方案是定义重新加载方法以在不重新连接的情况下删除并重新创建表。我的实例定义:

class DatabaseTest extends Instance(...) { 
    def reload = { 
    connector.withConnection { connection => 
     connection.dropAllTables() 
     Create.tables(mappings.values).foreach { 
     t => connection.createTable(t) 
     } 
    } 
    } 
} 
+0

好主意。但是,我们仍然不会急于在API中包含这样的低级功能。至少直到有一个体面的反馈进来。 –

+0

我们可以考虑一个“测试套件”API,这将是可用的。感谢您的快速反馈。 – Eduardo

+1

单一功能对于套件来说是不够的,而且我还没有看到其他功能的要求。同样,我们需要更多的反馈。 –

相关问题