Tôi có một EncouragementService.groovy
với phương pháp sau đâyLàm thế nào để kiểm tra dịch vụ Grails sử dụng Spock?
class EncouragementService {
def stripePaymentService
def encourageUsers(List<User> users){
if(null != users && users.size()>0){
for(User user : users){
//logic
stripePaymentService.encourage(user)
//
}
}
}
}
Để kiểm tra trên mã trong vũ trụ JAVA, sử dụng JUnit đầu tiên tôi sẽ tạo ra hai hoặc ba người dùng trong thiết lập. Chuyển danh sách người dùng đến phương thức encourageUsers(...)
và kiểm tra bất kỳ điều gì tôi muốn với kết quả.
Làm thế nào tôi có thể đạt được điều tương tự ở đây trong 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]
}
}
Tôi đang sử dụng spock:0.7
plugins {
test(":spock:0.7") { exclude "spock-grails-support" }
}
"Kiên nhẫn" là [tên của tôi] (http://www.ask.com/question/what-is-the-meaning-of-the-name-dhiraj), tôi không nói đùa;). Thành thật mà nói, gần đây tôi đã có một [bài thuyết trình] (http://dmahapatro.github.io/bdd-grails-spock-presentation/#/) về spock trong nhóm người dùng Grails User, vì vậy tôi nghĩ rằng tôi sẽ khoe khoang về điều gì đó tôi đã làm việc trên. ;) @ SérgioMichels – dmahapatro
@dmahapatro Khi 'Người dùng' không phải là thực thể dựa trên' grails-app/domain', tôi nhận được 'Thất bại: người dùng thử nghiệm được xử lý đúng cách (np.zazzercode.service.EncouragementServiceSpec) | org.codehaus.groovy.grails.exceptions.GrailsConfigurationException: Không thể thêm lớp Domain [class np.zazzercode.domain.User]. Nó không phải là một tên miền! \t tại grails.test.mixin.domain.DomainClassUnitTestMixin.registerGrailsDomainClass (DomainClassUnitTestMixin.groovy: 209) ' – prayagupd
@PrayagUpd Yea, nếu tài khoản không phải là một lớp miền, sau đó bạn sẽ không cần '@ Mock' đó là những gì tôi muốn nói trong câu trả lời. – dmahapatro