将函数转发给 ScalaTest 宏
Forward function to a ScalaTest macro
我正在将一些 QUnit Javascript 测试转换为 Scala。我的测试如下所示:
class XXX extends MyTests {
test("equals", () => {
val a = new XXX(x)
val b = new XXX(y)
ok(a.x != b.x, "Passed!")
ok(a.y != b.y, "Passed!")
ok(!a.equals(b), "Passed!")
ok(!b.equals(a), "Passed!")
a.copy(b)
ok(a.x == b.x, "Passed!")
ok(a.y == b.y, "Passed!")
ok(a.equals(b), "Passed!")
ok(b.equals(a), "Passed!")
})
}
MyTests
是我从 ScalaTest 派生的特征 FunSuite
我可以在代码中用 assert
替换 ok
,或者我可以在 MyTests
中放置以下内容:
def ok(ok: Boolean, message: String) = assert(ok, message)
第一个解决方案导致更好的测试,因为直接使用 assert
意味着 ScalaTest
使用 assert
的增强宏实现。第二种解决方案的工作要少得多,因为我不必在代码中替换 ok
。
有没有什么方法可以以不同于 FunSuite
的名称导入 assert
或以其他方式将我的实现转发给 ScalaTest 宏,以便 ok
的行为与 assert
?
import org.scalatest.Assertions.{assert => ok}
我正在将一些 QUnit Javascript 测试转换为 Scala。我的测试如下所示:
class XXX extends MyTests {
test("equals", () => {
val a = new XXX(x)
val b = new XXX(y)
ok(a.x != b.x, "Passed!")
ok(a.y != b.y, "Passed!")
ok(!a.equals(b), "Passed!")
ok(!b.equals(a), "Passed!")
a.copy(b)
ok(a.x == b.x, "Passed!")
ok(a.y == b.y, "Passed!")
ok(a.equals(b), "Passed!")
ok(b.equals(a), "Passed!")
})
}
MyTests
是我从 ScalaTest 派生的特征 FunSuite
我可以在代码中用 assert
替换 ok
,或者我可以在 MyTests
中放置以下内容:
def ok(ok: Boolean, message: String) = assert(ok, message)
第一个解决方案导致更好的测试,因为直接使用 assert
意味着 ScalaTest
使用 assert
的增强宏实现。第二种解决方案的工作要少得多,因为我不必在代码中替换 ok
。
有没有什么方法可以以不同于 FunSuite
的名称导入 assert
或以其他方式将我的实现转发给 ScalaTest 宏,以便 ok
的行为与 assert
?
import org.scalatest.Assertions.{assert => ok}