gpt4 book ai didi

scala - 如何将共享测试与需要清理的装置结合起来?

转载 作者:行者123 更新时间:2023-12-04 15:38:46 26 4
gpt4 key购买 nike

目前,我有一组共享的 Scalatest 测试,它们存在于一个特征中,并在必要时混合到测试类中,如下所示:

trait SharedBehavior{

def supportsCoolFeature(){
//Testing happens here
}

def doesNotSupportCoolFeature(){
//Testing happens here
}
}
class MyItemTests extends SharedBehavior{

"A-Type Items" should behave like supportsCoolFeature(itemA)

"B-Type Items" should behave like doesNotSupportCoolFeature(itemB)
}

不幸的是, itemAitemB是引用数据库中对象的 Scala 类实例。要运行这些测试,我需要创建相应的数据库记录,然后在测试后将其删除。如何有效地使用允许我通过共享测试执行设置和拆卸的夹具策略?

虽然它并不理想,但我愿意接受一个为整个套件设置和拆卸一次的解决方案。我可以编写测试,这样它们就不会相互干扰,但我需要防止数据库随着时间的推移变得困惑。

最佳答案

尝试

class MyItemTests extends SharedBehavior with BeforeAndAfterEach with DbSupport {

override def afterEach(): Unit = {
db.deleteAll()
}

def itemA: Item = {
val item = createItemA
db.insert(item)
item
}

def itemB: Item = {
val item = createItemB
db.insert(item)
item
}

"A-Type Items" should behave like supportsCoolFeature(itemA)

"B-Type Items" should behave like doesNotSupportCoolFeature(itemB)
}

trait SharedBehavior {

def supportsCoolFeature(item: => Item) {
// assert on item
}

def doesNotSupportCoolFeature(item: => Item) {
// assert on item
}
}

trait DbSupport {
val db = {
// initialise dataase
}
}

关于scala - 如何将共享测试与需要清理的装置结合起来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56658422/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com