scala.js тестване с шега

https://facebook.github.io/jest/docs/en/getting-started.html

Jest runner се нуждае от файл със суфикс .test/spec.js

sum.test.js

const sum = require('./sum');

test('adds 1 + 2 to equal 3', () => {
  expect(sum(1, 2)).toBe(3);
});

Постигнах нещо подобно, като създадох нов sjs проект

package myapp.test

import scala.scalajs.js
import scala.scalajs.js.annotation.JSGlobalScope

object App {

  def main(args: Array[String]): Unit = {
    import Jest._
    test("add", () => {
      expect(1+ 2).toBe(3);
    })

  }
}


@JSGlobalScope
@js.native
object Jest extends js.Object {

  def test(str: String, function: js.Function0[_]): Unit = js.native

  def expect[T](in:T) : Matcher[T] = js.native
}

@js.native
trait Matcher[T] extends js.Object {

  def toBe(in:T):Unit = js.native
}

//build.sbt

artifactPath in Compile in fastOptJS := new File("./scalajs.test.js")

scalaJSLinkerConfig ~= (_.withModuleKind(ModuleKind.CommonJSModule))

scalaJSUseMainModuleInitializer := true

сега npm run test изпълнявам моите тестове, възможно ли е да се постигне подобно чрез писане на тестове в test/scala? (без да създавате нов отделен проект). Вероятно търся начин да дефинирам main method за тестове и scalaJSUseMainModuleInitializer in Test := true? :с


person invariant    schedule 27.06.2017    source източник


Отговори (1)


Напълно добре е да дефинирате main обект/метод в src/test/scala/ директорията и да използвате

scalaJSUseMainModuleInitializer in Test := true

За да го стартирате, използвайте test:run от sbt.

person sjrd    schedule 27.06.2017