Saturday, 21 March 2009
Release of gmock 0.7.0
Strict ordering is accomplished through the ordered closure. Here is an example with an hypothetic cached cat database:
def database = mock()
def cache = mock()
ordered {
database.open()
cache.get("select * from cat").returns(null)
database.query("select * from cat").returns(["cat1", "cat2"])
cache.put("select * from cat", ["cat1", "cat2"])
database.close()
}
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
Grails 1.1 released
Tuesday, 3 March 2009
Gsp reloading for other environments
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
New in Groovy 1.6
whats new in groovy 1.6
Groovy 1.6 will be released with grails 1.1
Sunday, 1 March 2009
Running Selenium Tests In Grails 1.1
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-app/conf/BuildConfig.groovy
:
grails.plugin.repos.discovery.energizedwork="https://svn.energizedwork.com/skunkworks/grails/plugins"
grails.plugin.repos.distribution.energizedwork="https://svn.energizedwork.com/skunkworks/grails/plugins"
Then type 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.