Jac*_*ter 8 testing dependency-injection scala playframework playframework-2.0
我想通过在测试期间提供模拟对象来测试我的Play应用程序.在我的头顶,有几种方法可以解决这个问题.
我不确定哪个更可行,或者如何去做.任何见解将不胜感激.
Bla*_*son 13
还有第三种方式; 将控制器创建为用于测试的类或特征.这是一个简单的例子.
你的特质+实施:
package services
trait MyService {
def getUser(id:String):User
}
class ConcreteService extends MyService {
override def getUser(id:String):User = {
//Do real stuff
}
}
Run Code Online (Sandbox Code Playgroud)
在您的控制器类中:
package controllers
import services._
class Users(service: MyService) extends Controller {
def show(id: String) = Action {
val user = service.getUser(id)
Ok(views.html.user(user))
}
}
object Users extends controllers.Users(new ConcreteService()) {}
Run Code Online (Sandbox Code Playgroud)
现在你可以运行一些单元测试..
package test
import controllers.Users
import play.api.test._
import play.api.test.Helpers._
import org.specs2.mock.Mockito
import org.specs2.mutable.Specification
class UsersSpec extends Specification with Mockito {
val service = mock[MyService]
"Users controller" should {
"list users" in {
//Insert mocking stuff here
val users = new Users(service)
val result = users.show("somerandomid")(FakeRequest())
status(result) must equalTo(OK)
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4200 次 |
| 最近记录: |