###前提・実現したいこと
いつも大変お世話になっています。
playframework2.5.xでSpecs2を使ってテストを記述しています。
scalikejdbcのfixture機能を使い、modelのテストを記述しようとしましたが、
User.createで登録したデータがないというエラーが発生しました。
fixture機能はapplyUpdateしたモデル以外ではfixture機能は反映されないということでしょうか。
###該当のソースコード
https://github.com/kazuogawa/linebot_requestBoard/blob/master/app/models/json/GetJson.scala
object GetJson { def addOrder(event:Event):JsValue = { val user = User.findByLineuser_id(event.source.lineuser_id) val replyToken = event.replyToken user match { case Some(userdata) => { val contents = event.message.text val order = Order.create(userdata.id,contents) MakeJson.makeAddOrderReplyJson(replyToken, "「" + contents + "」を登録しました", order.id) } //この分岐に飛んでしまいました case _ => MakeJson.makeReplyTextJson(replyToken, "システムのエラーが発生しました。登録できませんでした。") }
###テストコード
class getJsonSpec extends Specification with TestDBSettings{ trait AutoRollbackWithFixture extends AutoRollback{ override def fixture(implicit session: DBSession): Unit = { applyUpdate(delete from Complete) applyUpdate(delete from Order) applyUpdate(delete from User) } val user1 = User.create("testuser1","lineuser_id1") Order.create(user1.id,"TestOrder1") } "GetJson"should { "addOrder" in new AutoRollbackWithFixture { val event = Event("replytoken","message",123456789,l_Source("user","lineuser_id1"), Message("id","text","testtext"),Data("")) val json = GetJson.addOrder(event) val user = User.findByLineuser_id(event.source.lineuser_id) ((json \ "messages")(0) \ "text").get should_== ("「testtext」を登録しました") } } }
###試したこと
・テスト実行時に、GetJson#addOrderのuser変数の中身を確認した所、Noneが返ってきました。
・テストコード内で
User.findByLineuser_id(event.source.lineuser_id)
を行った際は、データは取得できました。
また、activator runで動かした際は正常にuserを取得出来ています。
###補足情報(言語/FW/ツール等のバージョンなど)
言語: Scala
FW: Playframework2.5
scalikejdbc: 2.5.1
あなたの回答
tips
プレビュー