我正在做的是测试暗模式功能。有一个按钮可以切换暗模式。当它点击时,onClick
事件将触发,css 变量值将更改为暗模式。但是当我检查文本区域的背景颜色时,它没有改变。我检查了暗模式按钮onClick
功能是否成功触发。
测试用例:-
it("should change the background color when dark mode enabled", () => {
render(<App />);
const darkModeBtn = screen.getByText(/dark mode/i);
const textArea = screen.getByTestId("text-area");
darkModeBtn.click();
expect(textArea).toHaveStyle("background-color: rgb(39, 39, 39)"); // rgb(39, 39, 39) is equal to #272727
});
按钮元素:-
<button className="menu-btn btn" onClick={toggleTheme}>
Dark Mode
</button>
toggleTheme
按钮元素的功能onClick
:-
function toggleTheme() {
const currentTheme: string =
document.documentElement.getAttribute("data-theme") ||
localStorage.getItem("theme") ||
"dark";
if (currentTheme === "light") {
document.documentElement.setAttribute("data-theme", "dark");
localStorage.setItem("theme", "dark");
} else if (currentTheme === "dark") {
document.documentElement.setAttribute("data-theme", "light");
localStorage.setItem("theme", "light");
}
}
要获取有关代码的更多信息:- https://github.com/Muhammed-Rahif/Notepad
react-testing-library 中的 css 变量是否有任何问题,或者我们无法在 RTL 中测试与 css 变量相关的测试?如果可以,会怎么样?!
根据我的研究,我在 Github 中发现了这两个问题:-