veritabanıGrails'de bir etki alanı nesnesinin statik yöntemini nasıl kullanırsınız?
class Foo {
/* member variables, mapping, constraints, etc. */
static findByCustomCriteria(someParameter, List listParameter) {
/* code to get stuff from the database... */
/*
Return value is a map
["one": "uno", "two": "due", "three": "tre"]
*/
}
}
findByCustomCriteria
anlamına Foo tablo veri çeker sorgu oluşturmak için createCriteria()
kullanan statik işlevi veri almak için özel bir statik işlevi olan bir Grails alan nesne olması mockDomain(Foo)
çalışmaz ünite test edildiğinde uygun şekilde. Ben bu etrafında çalışmak için ne yapmaya çalışıyorum findByCustomCriteria
alay etmek için alay genel amaçlı yöntemlerden birini kullanmak, ancak sözdizimi oldukça doğru alamıyorum.
Test etmeye çalıştığım bir denetleyici BarController
var ve aramaya BarController.someFunction()
numaralı aramaya gömdüm Foo.findByCustomCriteria()
numaralı çağrı var.
class BarControllerTest extends ControllerUnitTestCase {
protected void setUp() {
super.setUp()
}
protected void tearDown() {
super.tearDown()
}
void testSomeFunction() {
/* Mocking for Foo goes here */
assertEquals("someValue", controller.someFunction())
}
}
Bunun için bir yol ne olurdu?
new MockFor()
, mockFor()
ve metaClass
kullanmayı denedim, ancak çalışamıyorum.
Düzenleme:
bunu dışarı alay etmeye çalıştı her zaman, ben başlangıçta yeterli bilgi içermiyordu galiba ... şöyle
Foo.metaClass.'static'.findByCustomCriteria = { someParam, anotherParam ->
["one": "uno", "two": "due", "three": "tre"]
}
onu alay etmeye çalıştı.
Ben bir kereden bu senaryo daha karşılaştığınız
alay ve foo şeyleri ... – hvgotcodes