mieć obiektu domeny Grails, który ma zwyczaj statyczną funkcję, aby pobrać dane z bazy danychJak wyśmiewać statyczną metodę obiektu domeny w Grails?
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"]
*/
}
}
Statyczna funkcja findByCustomCriteria
wykorzystuje createCriteria()
zbudować kwerendę, która pobiera dane z tabeli Foo, co oznacza mockDomain(Foo)
nie działa prawidłowo, gdy testowanie jednostkowe. Próbuję to obejść, używając jednej z ogólnych metod szyderstwa, aby wyśmiać findByCustomCriteria
, ale nie mogę uzyskać poprawnej składni.
Mam kontroler BarController
, który próbuję przetestować, i pochowany w wywołaniu BarController.someFunction()
jest połączenie z Foo.findByCustomCriteria()
.
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())
}
}
Jaki byłby sposób na wyśmiewanie tego?
Próbowałem już używać new MockFor()
, mockFor()
i metaClass
, ale nie mogę go uruchomić.
Edit:
każdym razem starałem się kpić z tego, próbowałem go wyśmiewać, tak jak ...
Foo.metaClass.'static'.findByCustomCriteria = { someParam, anotherParam ->
["one": "uno", "two": "due", "three": "tre"]
}
Chyba nie zawiera wystarczających informacji, początkowo.
położyć drwiny i rzeczy foo w ... to, co musimy zobaczyć, aby pomóc – hvgotcodes