#flutter #unit-testing #dart #dio
Вопрос:
Я пытаюсь издеваться над моим клиентом Dio с помощью http-mock-adapter при использовании метода put и метода error, но я получаю эти ошибки:
Исключение: ошибка утверждения: «Не удалось найти запрос на сопоставление с поддельным маршрутом для POST / onboard / answer { data: {«pageId»:»1″},
Исключение: ошибка DioError [DioErrorType.response]: {сообщение: какая-то красивая ошибка!}
Я обнаружил эту проблему https://githubmemory.com/repo/lomsa-dev/http-mock-adapter/issues/96?page=2 но я не решил свою проблему. Ниже приведен код
main() {
final dio = Dio(BaseOptions());
final dioAdapter = DioAdapter(dio: dio);
dio.httpClientAdapter = dioAdapter;
final service = NetworkService(dio);
test("should return a DioError", () async {
const path = "/onboard/page-date/0/lastAnswerId";
final dioError = DioError(
error: {'message': 'Some beautiful error!'},
requestOptions: RequestOptions(path: path),
response: Response(
statusCode: 404,
requestOptions: RequestOptions(path: path),
),
type: DioErrorType.response,
);
dioAdapter.onGet(path, (server) {
server.throws(404, dioError);
});
final result = await service.getOnboardingAnswer("lastAnswerId");
expect(result, isA<OnboardModel>());
});
final answerModel = AnswerModel(pageId: "1");
test("should return 200", () async {
const path = "/onboard/answer";
dioAdapter.onPost(path, (server) {
server.reply(200, 200);
});
final result = await service.postOnboardingAnswer(answerModel);
expect(result, isA<int>());
});
Ответ №1:
У меня была такая же проблема. Сбой Dio, поскольку он пытается сопоставить маршрут с точной полезной нагрузкой данных, которую вы отправляете.
Если вас не волнуют фактические отправляемые данные, вы можете использовать Matchers.any
из http-mock-adapter
библиотеки:
dioAdapter.onPost(url, (server) {
server.reply(200, 200);
}, data: Matchers.any);