我想将一个带有依赖项的scala类的方法存根.有没有办法使用ScalaMock实现这一目标?
这是我所拥有的简化示例:
class TeamService(val dep1: D1) {
def method1(param: Int) = param * dep1.magicNumber()
def method2(param: Int) = {
method1(param) * 2
}
}
Run Code Online (Sandbox Code Playgroud)
在这个例子中,我想嘲笑method1().我的测试看起来像:
val teamService = ??? // creates a stub
(teamService.method1 _).when(33).returns(22)
teamService.method2(33).should be(44)
Run Code Online (Sandbox Code Playgroud)
有没有办法实现这个目标?
我正在使用Play 2.4.我想用我自己的类替换默认路由器,使用新的动态依赖注入播放功能.这样做的步骤是什么?
我正在尝试为我的 User 类层次结构编写一些通用构建器。我有一个特征,UserBuilder,特征中的每个“with”方法都必须返回与当前类相同的类型。因此,如果我在 ComplexUserBuilder 中,withId 方法应该返回 ComplexUserBuilder 而不是 UserBuilder。
但我得到
涉及类型 T 的非法循环引用
有没有办法解决这个问题?
这是我的代码:
trait UserBuilder[T >: UserBuilder[T]] {
var id: String = ""
def withId(id: String): T = {
this.id = id
return this
}
}
class ComplexUserBuilder extends UserBuilder[ComplexUserBuilder] {
var username: String = ""
def withUsername(username: String): ComplexUserBuilder = {
this.username = username
return this
}
def build = new ComplexUser(id, username)
}
Run Code Online (Sandbox Code Playgroud)
顺便说一句,如果我替换trait UserBuilder[T >: UserBuilder[T]]为trait UserBuilder[T >: UserBuilder[_]]我得到:
类型参数 [model.ComplexUserBuilder] …
int main()
{
int var = 1;
var += ++var;
cout<<var;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在Java中,这将按预期输出3,但在C++(上面)中输出4.为什么?
scala ×3
atom-editor ×1
c++ ×1
class ×1
generics ×1
overriding ×1
scalamock ×1
unit-testing ×1
url-routing ×1