我在Controller中有一个方法,我希望使用Spec2进行单元测试。
object MyController extends Controller with MyAuth {
def article(id: String) = {
authenticate {
......
}
}
}
authenticate
在MyAuth
中定义。此函数获取令牌(如果可用)或验证并获取令牌。我想在单元测试authenticate
时模拟article
。我不知道如何处理这个问题。任何指针都会有所帮助。
更新:我的方法到目前为止。 我在MyAuth特征中看到了这个question并覆盖了authenticate方法。
trait MyAuthMock {
this: MyAuth =>
override def authenticate ....
}
我还将MyController
更改为具有类和伴随对象。然后在我的测试中,我使用控制器如下
new MyController with MyAuthMock
答案 0 :(得分:1)
您可以稍微重构一下代码,以便更容易测试。例如:
class MyController extends Controller {
def authenticate(...) // abstract method
def article(id: String) = {
authenticate {
......
}
}
}
object MyController extends MyController with RealAuth
在您的测试课程中,您可以执行以下操作:
val myTestController = new MyController with FakeAuth
FakeAuth是模拟者。