test("api", () => {
const class = new Test();
const arr = [true, false, true];
const mock = [{title: 'test1'},{title: 'test2'},{title: 'test3'}]
class.apiContentDdbox(mock);
});
W sumie tutaj jeszcze nie ma żadnego testu, bo próbujesz wywołać swój kod, ale błędnie... i powinien pojawić się SyntaxError (Uncaught SyntaxError: Unexpected token 'class'
).
EDIT:
Przejrzyj sobie dokumentacje, oraz obejrzyj jakieś wideo na ten temat
https://testing-library.com/docs/dom-testing-library/example-intro
bo obecny kod w takiej formie nie nadaje się do testowania
const modifyDOM = (response, arr, parent = document) => {
response.forEach((_, i) => {
const titleEl = parent.querySelector(`:scope #box${i} .title`);
if (titleEl) {
titleEl.textContent = arr[i]
? response[i].title
: 'test'
}
}
import { getByText } from '@testing-library/dom';
import '@testing-library/jest-dom';
import modifyDOM from './modify-dom' // <-- Twoja funkcja
const template = document.createElement('div');
beforeEach(() => {
// Tworzymy szablon HTML na potrzeby testów
template.innerHTML = `
<div data-id="1a" id="box0" class="box">
<div class="title"></div>
</div>
<div data-id="2b" id="box1" class="box">
<div class="title"></div>
</div>
`;
});
test('Correct text change', () => {
// Przygotowujemy dane testowe
const arr = [true, false];
const response = [{ title: "lorem" }, { title: "ipsum" }];
// Przekazujemy dane do funkcji wraz z szablonem html
modifyDOM(response, arr, template);
// Sprawdzamy, czy w naszym szablonie pojawiły się odpowiednie teksty
expect(getByText('lorem')).toBeInTheDocument();
expect(getByText('test')).toBeInTheDocument();
});
Z moim przykładem jest trochę lepiej, ale też szału nie robi, bo został pisany na szybko oraz bez kontekstu co chcesz dokładnie przetestować żeby jedynie zademonstrować coś na potrzeby tego przykładu.