На данный момент звонков не ожидается. Еще 1 вызов (ы) ожидаемой ошибки - PullRequest
0 голосов
/ 03 апреля 2019

В интеграционном тесте я использую Groovy Mock, чтобы смоделировать метод обслуживания, как показано ниже:

def mock = new groovy.mock.interceptor.MockFor(PaymentService)

mock.demand.processPayment(){ a, b, c-> ['status': true, 'approved': true, 'tresponse':  new TransactionResponse(amount: total.toBigDecimal(), transactionId: "4234234555", saleId: Sale.last().id, responseCode: "1", responseReasonCode: "1", responseReasonText: "approved", authorizationCode: "asdasd", paymentMethod: "CC", transactionType: "auth_capture", cardCodeResponse: "P").save(flush: true)]}


mock.use{
    controller.paymentService = new PaymentService()

    populateReceiptParams(total)

    controller.receipt()

}

Метод контроллера платежей receive () использует метод обслуживания платежей processPayment, который взаимодействует с authorize.net.,Так что я смоделировал этот метод, как показано выше.

Когда тест запускается, я получаю следующую ошибку:

junit.framework.AssertionFailedError: No call to 'getMergedSale' expected at this point. Still 1 call(s) to 'processPayment' expected.
    at PaymentController.cart(PaymentController.groovy:296)
    at PaymentController.receipt(PaymentController.groovy:1096)

Так что дело в том, что внутри метода получения делается еще один вызов службы платежей

paymentService.getMergedSale([sessionAuth, userAuth])

Значит ли это, что перед методом getMergedSale должен вызываться поддельный метод processPayment?Я ценю любое руководство в отношении причины этой ошибки.Спасибо!

1 Ответ

1 голос
/ 03 апреля 2019

Значит ли это, что проверяемый метод processPayment должен быть вызванным первым до getMergedSale?

Не обязательно, нет. Это означает, что вам нужно предоставить проверенную реализацию getMergedSale.

...