サーバーからカテゴリのリストを取得する Scala.js で記述された React コンポーネントをテストしようとしています。コンポーネントに代替のjQueryインスタンスを提供できましたが、jQueryモック自体はコンパイルできません。モックのコードは次のとおりです。
import org.scalajs.jquery.{JQueryXHR, JQueryStatic}
import scala.scalajs.js
import utest._
class jQueryMock extends JQueryStatic {
var awaitedRequests = Map.empty[String, PartialFunction[js.Any, js.Any]]
def whenGet(url: String)(response: PartialFunction[js.Any, js.Any]): Unit = {
awaitedRequests += (url -> response)
}
override def get(url: String, data: js.Any, success: js.Any, dataType: js.Any): JQueryXHR = {
awaitedRequests.get(url) match {
case Some(response) =>
if(response.isDefinedAt(data))
success.asInstanceOf[(js.Any) => Unit](response(data))
else
assert(false)
case None => assert(false)
}
new JQueryXHR {}
}
}
Scala.js コンパイラによると、このコードには 2 つの問題があります。
警告:(14, 95) js.Any を拡張する特性、クラス、およびオブジェクトのメンバーには、js.native を呼び出すメンバーのみを含めることができます。これは 1.0 で適用されます。
override def get(url: String, data: js.Any, success: js.Any, dataType: js.Any): JQueryXHR = {
エラー:(19, 9) js.Any を拡張する特性、クラス、およびオブジェクトは、内部の特性、クラス、またはオブジェクトを持たない可能性があります
new JQueryXHR {}
Scala.js のネイティブ クラスをモックする他の方法はありますか (または、実際にバックエンド クエリをテストする他の方法はありますか)?
編集
extends JQueryStatic
andを捨ててnew JQueryXHR {}
戻り値の型を変更するとdef get
、クラスは正常にコンパイルされます。このようにして、AJAX を処理する jQuery ラッパーを作成することができ、これをモックすることができます。これは機能しますが、非常に多くの問題があるようです。これを行う他の方法はありますか?