用于Javascript导入对象或函数的Intellij调试器控制台
我有一个Jest文件,正在Intellij中调试用于Javascript导入对象或函数的Intellij调试器控制台,javascript,intellij-idea,jestjs,javascript-debugger,Javascript,Intellij Idea,Jestjs,Javascript Debugger,我有一个Jest文件,正在Intellij中调试 import { screen, waitFor } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; describe('<SamplePage />', () => { afterEach(() => { jest.clearAllMocks(); }
import { screen, waitFor } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
describe('<SamplePage />', () => {
afterEach(() => {
jest.clearAllMocks();
});
it('Correct text in SampleForm', () => {
renderPage();
expect(screen.getByRole('heading')).toHaveTextContent(
"Text to check",
);
});
});
从'@testing library/react'导入{screen,waitFor};
从“@testing library/user event”导入userEvent;
描述(“”,()=>{
之后(()=>{
开玩笑。clearAllMocks();
});
它('Correct text in SampleForm',()=>{
renderPage();
期望(screen.getByRole('heading')).toHaveTextContent(
“要检查的文本”,
);
});
});
然后,我通常在expect()行上放置一个断点,这样视图就已经呈现了。到达断点后,我打开调试器控制台,通过测试各种语句开始使用测试api。但是,在尝试调用screen.debug()时,调试器控制台中立即出现错误:
尽管自动完成在屏幕的调试器中工作:
例如,我一直使用的解决方法是将导入的对象屏幕分配到变量x中。然后,当我到达断点时,我可以使用x变量作为屏幕,并调用各种方法,如debug或getByRole
然而,这很麻烦,因为可能有多个导入的对象我想要探索,并且将它们分配给一个临时变量是不可伸缩的。有人知道如何在Intellij中解决这个问题吗?在调试过程中评估代码时未定义的变量(在您的情况下为screen
)是由导入对象的奇怪传输方式+sourcemaps中缺少名称映射引起的:如果在传输/混淆时重命名了变量,并且没有提供适当的名称映射,调试器将无法将源代码中的变量与VM中的变量相匹配
在评估babel传输/webpack构建的模块中的ES6导入时,存在一些已知问题。详情请参阅。不幸的是,没有办法修复IDE端的问题。提供的代码不会抛出该错误,除非它隐藏在
renderPage()中。
?不,抛出该错误的不是代码,而是调试器控制台,当我到达expect()行上的断点时,我使用调试器控制台执行screen.debug()之类的语句expect(screen.getByRole('heading')).toHaveTextContent(“要检查的文本”)
不调用屏幕。debug
@evolutionxbox不,我在调试器控制台手动调用它;问题不在代码本身,而是在调试器控制台中,您可以在那里键入任何要执行的JS语句。由于某些原因,调试器控制台无法解析屏幕或导入的任何对象感谢这些链接,它们将被读取