Saturday, 21 March 2009
Strict ordering is accomplished through the ordered closure. Here is an example with an hypothetic cached cat database:
def database = mock()
def cache = mock()
cache.get("select * from cat").returns(null)
database.query("select * from cat").returns(["cat1", "cat2"])
cache.put("select * from cat", ["cat1", "cat2"])
The partial mocking is performed simply by using the mock method on your concrete object. Here is how it works with a grails controller:
def controller = new SomeController()
mock(controller).params.returns = [id: 3]
GMock 0.7.0 is the last release compatible with Groovy 1.5.x. Support for Groovy 1.6.0 is coming soon.
Tuesday, 10 March 2009
Tuesday, 3 March 2009
This came to light because we do not use production data in our development environment but sometimes it's useful to have production data to test with or to work out a bug. We have a separate environment config for the times we want to run with prod data so this little flag has become a life-saver.
Monday, 2 March 2009
Sunday, 1 March 2009
Anyone experimenting with Grails 1.1 might be interested to know that I've got the Selenium plugin working. If you put the following entries in your project's
grails install-plugin ew-selenium you should be good to go.
The command to run tests is
grails run-selenium. The script now runs in the test environment by default so you no longer need to use
grails test run-selenium.
You may need to configure the browser Selenium uses. To do so edit
test/selenium/selenese/conf/SeleniumConfig.groovy and set the
selenium.browser property. For some reason Firefox 3 needs to be specified as *chrome. For example on a Mac I have to use the setting
selenium.browser = "*chrome /Applications/Firefox.app/Contents/MacOS/firefox-bin"
I have no idea why this is necessary. I have upgraded the Selenium Server version included in the plugin but I found this was also necessary with the old 0.9.2 version.
I changed the plugin name to ew-selenium as there is a plugin called selenium on the main Grails plugin repository and it looks like Grails will ignore conflicting names on other repositories.