我有一个名为 User 的域类。运行测试时,我想通过执行以下操作重新定义 User 类的 get 方法
User.metaClass.static.get = {Long id -> [username:"joe", id:id]}
但是当我打电话时,应用上述内容似乎没有影响
用户.get(2)
我可以在 get() 或 list() 等静态 Domain GORM 方法中使用 metaClass 来改变它们的行为吗?谢谢
这是我的测试用例:
@测试
无效测试我(){
User.metaClass.static.get = { id -> [username:"joe", id:id]} def user = User.get(3) assert user.username == "joe"
}
我得到一个 NPE 无法在空对象上获取属性“用户名”
我实际上可以使用 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" }