Для целей тестирования мне нужно переопределить «равно» метод:Как издеваться над String.equals в Groovy?
def any = [equals: { true }] as String
any == 'should be true'
// false
Более подробно о проблеме:
class EmployeeEndpointSpec extends RestSpecification {
void "test employee"() {
when:
get "/v1/employee", parameters
then:
expectedStatus.equals(response.statusCode)
expectedJson.equals(response.json)
where:
parameters << [
[:],
[id: 824633720833, style: "small"]
]
expectedStatus << [
HttpStatus.BAD_REQUEST,
HttpStatus.OK
]
expectedJson << [
[errorCode: "badRequest"],
[
id: 824633720833,
name: "Jimmy",
email: "[email protected]",
dateCreated:"2015-01-01T01:01:00.000", // this value should be ignored
lastUpdated: "2015-01-01T01:01:00.000" // and this
]
]
}
}
lastUpdated
и dateCreated
может изменяться во времени, и мне нужно как-то их игнорировать.
Пожалуйста, объясните * почему * вам нужно высмеять такой низкоуровневый метод. Там может быть гораздо лучший подход, например, издеваться над тем, что получает струны. –
Мне это нужно для тестирования ответа REST (JSON преобразован в карту). Моя задача - проверить, что возвращаемый ответ такой же, как ожидалось, за исключением некоторых значений - их следует игнорировать. Пример ответа: '[sucess:" true ", date:" 2015-01-01 "]', и я хочу что-то вроде этого [[sucess: "true", date: new AnyValue] .equals (response) '. – AndreyT
Напишите код вашего модульного теста и объясните, ЧТО вы хотите протестировать, а не КАК. – kazanaki