disneystreaming / weaver-test

A test framework that runs everything in parallel.
https://disneystreaming.github.io/weaver-test/
Other
437 stars 49 forks source link

IOSuite test suite extended by MockFactory (scalamock) never executes #640

Open DenisNovac opened 1 year ago

DenisNovac commented 1 year ago

Weaver version: "0.8.1" Scalamock version: "5.2.0"

In build.sbt:

testFrameworks += new TestFramework("weaver.framework.CatsEffect")

Example code:

class MySpec(global: GlobalRead) extends IOSuite with LowPriorityImplicits with MockFactory { 
   test("test") { _ => expect(true) }
}

Test "test" will never be called while suite is extended by MockFactory. If you remove with MockFactory - it will work fine.

Baccata commented 1 year ago

Hi. Thanks for raising an issue for visibility.

In all frankness and at the risk of disappointing you, this is not something that I will dedicate time to investigate. If you find the root cause of the issue, and a potential fix, I'll happily look at a PR though :)

DenisNovac commented 1 year ago

Hello, sure, it's ok, i was just wondering if anyone already had similar problem and fixed it somehow.

DenisNovac commented 1 year ago

As a workaround i used MockitoCats from mockito-scala instead of ScalaMock. This library doesn't depend on scala's test frameworks so it worked out for me.

kubukoz commented 1 week ago

The issue is that the MockFactory you're using is probably scalatest-specific. Instead, you should extend org.scalamock.MockFactoryBase (which is framework-agnostic) and implement the newExpectationException function.

Not a great implementation but this should get you going:

  type ExpectationException = Throwable

  protected def newExpectationException(message: String, methodName: Option[Symbol]): ExpectationException =
    new Throwable(s"$methodName: $message")