我正在测试这个组件,它只是根据输入字段中的新输入来更改其状态,并将输入元素的值设置为该状态。
function Login () {
//Login Credentials
const [loginCredentials, setLoginCredentials] = useState({ name: '' })
const handleChange = ({target}) => {
setLoginCredentials(prev => ({ ...prev, [target.name]: target.value }));
}
return (
<div className="login-container">
<h1>Log In</h1>
<div className="login-label-input">
<label htmlFor="name">Account Name
<input
type="name"
id="name"
name="name"
placeholder="Enter Name"
onChange={handleChange}
value={loginCredentials.name}
aria-label="name"
/>
</label>
</div>
</div>
)
}
Run Code Online (Sandbox Code Playgroud)
由于某种原因,此测试不会在 screen.debug() 中显示输入值“testUser”,而仅显示“t”....
test("log in with empty name input returns error message", () => {
render(<Login />)
const nameField = screen.getByLabelText(/account name/i);
userEvent.type(nameField, 'testUser');
screen.debug() …Run Code Online (Sandbox Code Playgroud) 我正在尝试在测试中实现 fetch 模拟函数。按照教程,我尝试使用以下方法来做到这一点jest.fn():
const fetchFunction = jest.fn(() => {
return null
})
Run Code Online (Sandbox Code Playgroud)
由于某种原因,这不起作用。如果我只是console.log(fetchFunction)在测试中这样做,我会得到:
[Function: mockConstructor] {
_isMockFunction: true,
getMockImplementation: [Function],
mock: [Getter/Setter],
mockClear: [Function],
mockReset: [Function],
mockRestore: [Function],
mockReturnValueOnce: [Function],
mockResolvedValueOnce: [Function],
mockRejectedValueOnce: [Function],
mockReturnValue: [Function],
mockResolvedValue: [Function],
mockRejectedValue: [Function],
mockImplementationOnce: [Function],
mockImplementation: [Function],
mockReturnThis: [Function],
mockName: [Function],
getMockName: [Function]
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试通过console.log(fetchFunction())我得到的来调用它undefined?
我正在尝试在 create-react-app 文件夹中执行此操作。我需要安装额外的东西吗?关于为什么会发生这种情况有什么想法吗?