withOverrides method
IntegrationTestHttpResponse
withOverrides({
- String? pathOverride,
- dynamic bodyMerge,
- dynamic bodyOverrides,
- int? statusCodeOverride,
- bool ignoreQuery = false,
- Duration? delayOverride,
- HttpMethod? methodOverride,
Creates a new response by overriding specific fields of an existing response.
Implementation
IntegrationTestHttpResponse withOverrides({
String? pathOverride,
dynamic bodyMerge,
dynamic bodyOverrides,
int? statusCodeOverride,
bool ignoreQuery = false,
Duration? delayOverride,
HttpMethod? methodOverride,
}) {
// Return same instance if no overrides are needed
if (pathOverride == null &&
bodyMerge == null &&
bodyOverrides == null &&
statusCodeOverride == null &&
ignoreQuery == false &&
delayOverride == null &&
methodOverride == null) {
return this;
}
// Check if the overrides would result in the same values
if (pathOverride == path &&
bodyOverrides == null &&
bodyMerge == null &&
statusCodeOverride == statusCode &&
ignoreQuery == this.ignoreQuery &&
delayOverride == delay &&
methodOverride == method) {
return this;
}
// Calculate new body only if needed
dynamic newBody = body;
if (bodyMerge != null || bodyOverrides != null) {
if (bodyMerge != null) {
newBody = deepMerge(newBody, bodyMerge);
}
if (bodyOverrides != null) {
newBody = bodyOverrides;
}
// If after merging/overriding the body is identical, and no other changes
if (identical(newBody, body) &&
pathOverride == null &&
statusCodeOverride == null &&
ignoreQuery == this.ignoreQuery &&
delayOverride == null &&
methodOverride == null) {
return this;
}
}
return IntegrationTestHttpResponse(
path: pathOverride ?? path,
statusCode: statusCodeOverride ?? statusCode,
headers: headers,
body: newBody,
ignoreQuery: ignoreQuery,
delay: delayOverride ?? delay,
method: methodOverride ?? method,
);
}