Scala 冲突的继承方法名称

标签 scala testing namespaces scalatest

我正在尝试编写一些代码来测试数据库模型。测试框架和数据库框架都使用“===”运算符,并且优先考虑测试框架。如何明确使用一种方法或另一种方法?

例子:

import org.scalatest.FunSuite

class TestDBModels extends FunSuite{
  test("Test DoublePropertyEntry with a few new values") {
    Schemas.doubleProperties.deleteWhere(p => (p.id === p.id)))
  }
}

错误:

type mismatch;
found   : Option[String]
required: org.squeryl.dsl.ast.LogicalBoolean
Schemas.doubleProperties.deleteWhere(p => (p.===(p.id, p.id)))

最佳答案

您有多种选择。第一个也是最简单的方法是使用显式方法调用而不是隐式转换。例如,显式使用 scalatest ===:

Schemas.doubleProperties.deleteWhere(p => (convertToEqualizer(p.id) === p.id)))

如果这太长,您可以缩短名称:

def toEq(left: Any) = convertToEqualizer(left: Any)
Schemas.doubleProperties.deleteWhere(p => (toEq(p.id) === p.id)))

convertToEqualizer 是scalatest 的隐式转换方法。另一种选择是将 convertToEqualizer 重写为非隐式方法:

override def convertToEqualizer(left: Any) = new Equalizer(left)

这会阻止这种特定的隐式转换发生。查看scalatest documentation for Assertions objectsame question on the scalatest-users mailing list .

关于Scala 冲突的继承方法名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8079129/

相关文章:

java - 由于 try catch 而未执行其他条件

c++ - 在 C++ 中使用#define 宏从不同的命名空间中选择实现

php 命名空间 : what needs to be qualified?

c++ - 如何使用C++中另一个命名空间中定义的操作

scala - 如何优雅地终止 Spark 应用程序

scala 3 内联失败一个非常简单的例子

scala - .with在scala中的替代方法

Scala 2.11 类型差异更改

javascript - AVA:为每个测试用例设置不同的超时

javascript - 在 Angular 2 中测试服务时 NgModule 'DynamicTestModule' 的提供程序无效