Мягкие утверждения в javascript

У меня есть два бэкэнд-проекта P1 и P2. Данные из P1 должны поступать в P2 после некоторой обработки через промежуточное программное обеспечение. Я пишу это промежуточное ПО, и мне нужно создать модуль тестирования E2E.

У меня будет 100 тестовых примеров, и в каждом может быть 3 или 4 оператора ожидания. Функция ожидания chai - это форма жесткого утверждения. Как получить мягкие утверждения в javascript. По сути, тестовый пример будет запускать все 3 или 4 оператора ожидания и сообщать, какое из них не удалось.

возможно, это может помочь: stackoverflow.com/questions/46797661/…

Alex 28.09.2018 02:30
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
3
1
2 291
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Чай не допускает мягких утверждений, это противоречит их философии утверждений. Попробуйте воспользоваться библиотекой https://www.npmjs.com/package/soft-assert

Нам нужно было что-то подобное, и библиотеки, предложенной Раймондом, нам было недостаточно (мы не хотели менять библиотеку утверждений, а также в библиотеке не хватает многих типов утверждений, которые нам нужны), поэтому я написал этот, который, как мне кажется, идеально отвечает вопрос: https://github.com/alfonso-presa/soft-assert

С помощью этой библиотеки soft-assert вы можете обернуть другие библиотеки ассемблирования (например, chai expect, о которых вы просили), чтобы вы могли выполнять как мягкие, так и жесткие утверждения в своих тестах. Вот вам пример:

const { proxy, flush } = require("@alfonso-presa/soft-assert");
const { expect } = require("chai");
const softExpect = proxy(expect);

describe("something", () => {
    it("should capture exceptions with wrapped chai expectation library", () => {
        softExpect("a").to.equal("b");
        softExpect(false).to.be.true;
        softExpect(() => {}).to.throw("Error");
        softExpect(() => {throw new Error();}).to.not.throw();
        try {
            //This is just to showcase, you should not try catch the result of flush.
            flush();
            //As there are assertion errors above this will not be reached
            expect(false).toBeTruthy();
        } catch(e) {
            expect(e.message).toContain("expected 'a' to equal 'b'");
            expect(e.message).toContain("expected false to be true");
            expect(e.message).toContain("to throw an error");
            expect(e.message).toContain("to not throw an error but 'Error' was thrown");
        }
    });
});

Другие вопросы по теме