3

I am new to scalatest and scalamock. Here is what I have it in my sbt file

name := "cakepattern"
version := "0.1"
scalaVersion := "2.11.8"
libraryDependencies ++= Seq(
  "org.scalatest" %% "scalatest" % "3.0.0" % "test",
  "org.scalamock" %% "scalamock-core" % "3.1.1" % "test",
  "org.scalamock" %% "scalamock-scalatest-support" % "3.1.1" % "test",
  "org.scalacheck" %% "scalacheck" % "1.13.0" % "test"
)

And here is a class that I am trying to mock

package config

import dto.User
import services.AuthServiceComponent
import org.scalatest.mockito.MockitoSugar._
import services.impl.DefaultUserAuthServiceComponent


trait MockAuthServiceComponent extends AuthServiceComponent{

  val x = mock[AuthServiceLike]

  type AuthService = x.type
  override val userAuthService = x
}

When I am do sbt test:compile I get the following error

[error] missing or invalid dependency detected while loading class file 'MockitoSugar.class'.
[error] Could not access term mockito in package org,
[error] because it (or its dependencies) are missing. Check your build definition for
[error] missing or conflicting dependencies. (Re-run with `-Ylog-classpath` to see the problematic classpath.)
[error] A full rebuild may help if 'MockitoSugar.class' was compiled against an incompatible version of org.
[error] missing or invalid dependency detected while loading class file 'MockitoSugar.class'.
[error] Could not access type MockSettings in value org.mockito,
[error] because it (or its dependencies) are missing. Check your build definition for
[error] missing or conflicting dependencies. (Re-run with `-Ylog-classpath` to see the problematic classpath.)
[error] A full rebuild may help if 'MockitoSugar.class' was compiled against an incompatible version of org.mockito.
[error] missing or invalid dependency detected while loading class file 'MockitoSugar.class'.
[error] Could not access type Answer in value org.stubbing,
[error] because it (or its dependencies) are missing. Check your build definition for
[error] missing or conflicting dependencies. (Re-run with `-Ylog-classpath` to see the problematic classpath.)
[error] A full rebuild may help if 'MockitoSugar.class' was compiled against an incompatible version of org.stubbing.
[error] three errors found
[error] (test:compileIncremental) Compilation failed

What am I missing?

[Edit]

So the problem I was having before is resolved but now I get this

Error:scalac: missing or invalid dependency detected while loading class file 'AbstractMockFactory.class'.
Could not access type NoArgTest in trait org.scalatest.Suite,
because it (or its dependencies) are missing. Check your build definition for
missing or conflicting dependencies. (Re-run with `-Ylog-classpath` to see the problematic classpath.)
A full rebuild may help if 'AbstractMockFactory.class' was compiled against an incompatible version of org.scalatest.Suite.

Any suggestions?

Abdul Rahman
  • 1,294
  • 22
  • 41

3 Answers3

5

Try adding Mockito to your sbt file:

libraryDependencies ++= Seq(
  "org.scalatest" %% "scalatest" % "3.0.0" % Test,
  "org.scalamock" %% "scalamock-core" % "3.1.1" % Test,
  "org.scalamock" %% "scalamock-scalatest-support" % "3.1.1" % Test,
  "org.scalacheck" %% "scalacheck" % "1.13.0" % Test,
  "org.mockito" % "mockito-all" % "1.10.19" % Test
)

Take care, it's a simple "%", not a double one (it's a java dependency)

Other versions here : https://mvnrepository.com/artifact/org.mockito/mockito-all if 1.10.19 is not compatible with your codebase

EDIT :

Not sure that will help your second problem, but try that in an SBT console :

> clean
> compile
AmazingDreams
  • 3,136
  • 2
  • 22
  • 32
  • Is scalamock based on top of mockito? – Abdul Rahman Nov 14 '16 at 21:01
  • No, scalamock and mockito are two different projects. I didn't understand you included both libraries in your test case. I'd say remove the "import org.scalatest.mockito.MockitoSugar._" line in your test case, and the ""org.mockito" % "mockito-all" % "1.10.19" % Test" line in your build.sbt file, then try again. See that page also : http://scalamock.org/user-guide/integration/ – Patrick Laxton Nov 18 '16 at 06:10
1

Versions <3.3.0 are not compatible with Scalatest 3+.

I suggest updating to scalamock 3.4.2 (latest one as of writing).

You can always find the newest version on Maven Central.

Also, no need to specify scalamock-core, that gets pulled in automatically.

Philipp
  • 967
  • 6
  • 16
0

scalacheck 3.2 depend on scalatest 2.1.3, but you used scalatest 3.0.0, so they are not compatibal. remove the scalatest dependence will resolve the problem.