【发布时间】:2016-02-28 11:39:07
【问题描述】:
在学习playframework的同时尝试做一些TDD:
class ContentFetching extends PlaySpec with BeforeAndAfter with MockFactory
{
private val service = ContentService
private val languages = List(Language(Some(1), "en", "English", "Placeholder"),
Language(Some(2), "de", "Deutsch", "Platzhalter")
)
"find" must
{
"fail if languageCode is invalid" in
{
val fakeRepository = mock[LanguageRepositoryTrait]
(fakeRepository.get _).expects().returning(languages)
fakeRepository.get must have length 3
service.find("fr") must be Result.NotFound
}
}
}
ContentService 会调用:
def fourOhFour() = NotFound(s"Oops, content could not be found")
但断言service.find("fr") must be Result.NotFound 不会编译。为什么会这样以及如何测试呢?
这是整个 contentService(根据要求) 遗憾的是它目前扩展了 Controller,因为我没有找到其他方法来返回 Action。实际上我使用 MVC,但也使用服务 + 存储库层:
class ContentServiceComponent(languageRepository: LanguageRepositoryTrait, nodeRepository: NodeRepositoryTrait) extends Controller
{
def find(language: String) = Action
{
languageRepository.get().map(l => l.code).contains(language) match
{
case true => Ok(s"Homepage for $language")
case false => fourOhFour()
}
}
def fourOhFour() = NotFound(s"Oops, content could not be found")
}
object ContentService extends ContentServiceComponent(LanguageRepository, NodeRepository)
【问题讨论】:
-
ContentServices 是控制器吗?您能否也发布该类或至少找到方法
-
它是,虽然我不希望它是,因为它是我为解耦添加的另一层。我添加了课程
-
编译器打印的错误是什么?
标签: scala playframework tdd playframework-2.4