我有一个名为 EncouragementService.groovy
的文件,其中包含以下方法
class EncouragementService {
def stripePaymentService
def encourageUsers(List<User> users){
if(null != users && users.size()>0){
for(User user : users){
//logic
stripePaymentService.encourage(user)
//
}
}
}
}
为了在JAVA环境中测试上述代码,我将首先使用JUnit在setup中创建两个或三个用户。将用户列表传递给encourageUsers(...)
方法,并检查我想要的结果。
在grails中,我该如何实现相同的事情?
import com.github.jmkgreen.morphia.Datastore;
@TestFor(EncouragementService)
class EncouragementServiceSpec {
def morphiaService = new MorphiaService()
void testEncourageUsers() {
List<User> users = createUsers();
encouragementService.(users)
//
}
def createUsers(){
Datastore datastore = morphiaService.dataStoreInstance()
def user = new User()
user.setName("Prayag Upd")
//
datastore.save(user)
[user]
}
}
我正在使用spock:0.7
plugins {
test(":spock:0.7") { exclude "spock-grails-support" }
}
User
дёҚжҳҜеҹәдәҺgrails-app/domain
е®һдҪ“ж—¶пјҢжҲ‘дјҡеҫ—еҲ°Failure: test Users are properly handled(np.zazzercode.service.EncouragementServiceSpec) | org.codehaus.groovy.grails.exceptions.GrailsConfigurationException: Cannot add Domain class [class np.zazzercode.domain.User]. It is not a Domain! at grails.test.mixin.domain.DomainClassUnitTestMixin.registerGrailsDomainClass(DomainClassUnitTestMixin.groovy:209)
гҖӮ - prayagupa@Mock
,这就是我在答案中的意思。 - dmahapatrostripePaymentService
),以便在EncouragementService
中使用?由于它没有被注入,所以在测试应用程序时会抛出“java.lang.NullPointerException:无法在空对象上调用方法encourage()”。 - prayagupagiven
中添加def stripePaymentService = Mock(StripePaymentService)
和service.stripePaymentService = stripePaymentService
即可。 - prayagupa