简体   繁体   中英

Patches in scalatest

I'm new to scala and same for scalatest.

My aim is to write a Unit test for the following small piece of code:

import java.sql.SQLException

import com.typesafe.scalalogging.LazyLogging
import slick.jdbc.MySQLProfile.api._

import scala.concurrent.{ExecutionContext, ExecutionContextExecutor, Future}

object DbCreator extends LazyLogging {
  implicit val ex: ExecutionContextExecutor = ExecutionContext.global

  def createDatabaseIfNotExist(): Future[String] = {
    Database
      .forURL(url = "some host", user = "user", password = "pass", driver = "driver")
      .run(sqlu"CREATE DATABASE ...").map(_ => "created")
      .recover {
        case e: Throwable => {
          logger.error("Error!", e)
          throw new SQLException(e.getMessage)
        }
      }
  }
}

I've previously used python, which has the patch concept .

So my idea was to patch the Database class being imported and used in createDatabaseIfNotExist , so I can verify the different scenarios.

Unfortunately, I could not find equivalent/similar concept in scalatest.

Did I miss it?

Is my approach wrong? If so, how would u suggest me write a UT for the createDatabaseIfNotExist method?

Is the current DbCreator implementation not testable enough?

Many thanks for all help!

I see several options:

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM