1

User という Domain クラスがあります。テストを実行するとき、次のようにして User クラスの get メソッドを再定義したかった

User.metaClass.static.get = {長い ID -> [username:"joe", id:id]}

しかし、上記を適用しても、呼び出したときに影響がないようです

ユーザー.get(2)

get() や list() などの static Domain GORM メソッドで metaClass を使用して、動作を変更できますか? ありがとう

ここに私のテストケースがあります:

@テスト

ボイドテスト(){

  User.metaClass.static.get = { id -> [username:"joe", id:id]}

  def user  = User.get(3)

  assert user.username == "joe"

}

NPE Cannot get property 'username' on null object を取得します

私は実際にgroovy MockForを使ってそれを行うことができます

  def mockControl = new MockFor(User.class)

  mockControl.demand.get {id -> return [username:"joe"]}

  mockControl.use {

      def user = User.get(3)

      assert user.username == "joe"
  } 
4

2 に答える 2