gpt4 book ai didi

scala - 如何用功能替代方案替换此模式?

转载 作者:行者123 更新时间:2023-12-01 12:37:50 25 4
gpt4 key购买 nike

我在 Scala 中有以下模式:

object CurrentDriver {

private var webDriver: WebDriver = null

def invalidate = {
webDriver.quit()
webDriver = null
}

def getWebDriver = {
if (webDriver==null)
webDriver = DriverFactory.buildWebDriver
webDriver
}
}

它没有功能,它有一个 var,并且 invalidate 方法返回一个 Unit。需要单例对象,因为它被框架使用反射实例化的几个类引用,所以我没有办法将参数传递给它们。因此,他们需要调用 getWebDriver 来访问 WebDriver 的同一实例。我需要定期(在每个包含多个测试函数的测试场景之后)退出并重新创建一个新的 WebDriver,它由 invalidate 方法处理。

最佳答案

我建议使用 around block 。

 object CurrentDriver {
def around(f: WebDriver => Unit) = {
val webDriver: WebDriver = DriverFactory.buildWebDriver
f(webDriver) // your tests
webDriver.quit()
}
}

对于每个测试 block ,您可以将该 block 与 around 函数结合使用。

例如:

 def testFunc(webDriver: WebDriver) = around{ 
assert(2 ==2)
// do something with webDriver
}

关于scala - 如何用功能替代方案替换此模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27983946/

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