Skip to content

Commit

Permalink
Fix problem related to duplicate beans
Browse files Browse the repository at this point in the history
This check is safe to have in place and makes the problem go away but
there is a root problem that the artifact is being mocked multiple
times because of the way _artefactInstance is managed in
ParameterizedGrailsUnitTest.

Related to #18
  • Loading branch information
Jeff Scott Brown committed Oct 28, 2017
1 parent c03188d commit 7b4443f
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 3 deletions.
8 changes: 8 additions & 0 deletions apps/demo33/grails-app/services/demo/PersonService.groovy
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package demo

import grails.gorm.services.Service

@Service(Person)
abstract class PersonService {
abstract List<Person> list()
}
24 changes: 24 additions & 0 deletions apps/demo33/src/test/groovy/demo/PersonServiceSpec.groovy
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package demo

import grails.testing.gorm.DataTest
import grails.testing.services.ServiceUnitTest
import spock.lang.Issue
import spock.lang.Specification

@Issue('grails/grails-testing-support#18')
class PersonServiceSpec extends Specification implements ServiceUnitTest<PersonService>, DataTest {

void setupSpec() {
mockDomain Person
}

void 'test one'() {
expect:
service.list().size() == 0
}

void 'test two'() {
expect:
service.list().size() == 0
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ import org.grails.testing.GrailsUnitTest
import org.grails.testing.gorm.MockCascadingDomainClassValidator
import org.grails.testing.gorm.spock.DataTestSetupSpecInterceptor
import org.grails.validation.ConstraintEvalUtils
import org.springframework.beans.factory.support.BeanDefinitionRegistry
import org.springframework.context.ConfigurableApplicationContext
import org.springframework.transaction.PlatformTransactionManager
import org.springframework.validation.Validator
Expand Down Expand Up @@ -97,9 +98,11 @@ trait DataTest extends GrailsUnitTest {
void mockDataService(Class<?> serviceClass) {
Service service = (Service)dataStore.getService(serviceClass)
String serviceName = Introspector.decapitalize(serviceClass.simpleName)
applicationContext.beanFactory.autowireBean(service)
service.setDatastore(dataStore)
applicationContext.beanFactory.registerSingleton(serviceName, service)
if(!applicationContext.containsBean(serviceName)) {
applicationContext.beanFactory.autowireBean(service)
service.setDatastore(dataStore)
applicationContext.beanFactory.registerSingleton(serviceName, service)
}
}

AbstractDatastore getDataStore() {
Expand Down

0 comments on commit 7b4443f

Please sign in to comment.