我在我的項目中使用hazelcast,我想單元測試一些功能,但我不希望它連接到真正的榛子,並執行測試它爲我創建簡單的使用Scala的地圖,因爲在這裏hazelcast地圖也有 定製的模擬類是我的代碼UnitTesting:如何通過我的模擬類在閱讀代碼
trait UserRepository {
def getUserObj(id: String):Option[User]
def addToUserRepo(user: User)
}
class UserRepo extends UserRepository{
def getUserObj(id: String):Option[User] = {
val userMap = hcastClient.getMap[String, User]("UserMap")
val userObj = userMap.get(id)
Option(userObj)
}
def addToUserRepo(user: User) = {
val directUserMap: IMap[String, User] = hcastClient.getMap[String,User]("UserMap")
directUserMap.set(user.uuid, user)
}
,並在這裏,我創建了一個簡單的定製版本嘲笑所在班級的功能是相同的只是, Scala的地圖取代了它:
class UserRepoMock extends UserRepository {
val map:Map[String,User]=Map[String,User]()
def getUserMap:Map[String,User] = {
map
}
def getUserObj(id: String):User = {
val userMap = getUserMap
val userObj = userMap.get(id)
userObj
}
def addToUserRepo(user: User) = {
val userMap = getUserMap
userMap.put(user.uuid, user)
}
class UserUtil(userRepo:UserRepo) {
def addUser(user:User):Boolean={
try{
userRepo.addToUserRepo(user)
true
}
catch {
case e:Exception=>false
}
def getUser(id:String):User={
val user=userRepo.getUserObj(id)
user
}
慕我想單元測試方法addUser
,並通過做這樣getUser
的UserUtil
類
:
class UserUtilTest extends funSpec {
val userUtil=new UserUtil(new UserRepoMock)
userUtil.addUser //perform unit test on it
userUtil.getUser //perform unit test on it
// instead of doing this val userUtil=new UserUtil(new UserRepo)
}
但是編譯器不允許我這樣做,有什麼我丟失,請幫我我如何實現所需的功能
這是編譯器錯誤:
type mismatch; found : testhcastrepo.UserRepoMock required: com.repositories.UserRepo
尋求調試幫助的問題(「爲什麼這個代碼不工作?」)必須包含所需的行爲,特定的問題或錯誤以及在問題本身中重現問題所需的最短代碼。沒有明確問題陳述的問題對其他讀者無益。請參閱:如何創建[mcve] ...提示:錯誤消息! – GhostCat
編輯了我提到的錯誤的問題,請檢查 – swaheed