【问题标题】:How to test axios get request in useEffect using Jest and Enzyme?如何使用 Jest 和 Enzyme 在 useEffect 中测试 axios 获取请求?
【发布时间】:2020-07-25 18:40:45
【问题描述】:

我正在使用 axois-mock-adapter、jest 和酶测试我的 axios 获取请求。运行测试时,我的控制台出现 404 错误。一旦我将 axios 调用置于 useEffect 中,它就开始发生了。

关于我可能做错的任何建议?提前致谢

App.js

function App() {
    const [keyword, setKeyword] = useState("")
    const [searchResults, setSearchResults] = useState([])

    useEffect(() => {
        getDataService(keyword)
        .then(({ data }) => {
            setSearchResults(data.suggestions)
        })
        .catch(err => console.log(err))
    }, [keyword])

    return (
        <div className="App">
            <form className="container">
                <InputField keyword={keyword} setKeyword={setKeyword} />
                <SearchResults keyword={keyword} searchResults={searchResults} />
            </form>
        </div>
    );
}

App.test.js

    let mock = new MockAdapter(axios);
    let wrapper;

    describe('App component', () => {
        beforeEach(() => {
         wrapper = mount(<App />)
        });
      it("should get results from api service based on keyword", async () => {
          mock.onGet('search?q=', { params: { keyword: 'shirt'}}).reply(200, {
            data: [{ searchterm: "blue shirt", nrResults: 1000 }]
          });
          axios
            .get("/search?q=", { params: { searchText: "shirt" } })
            .then(response => {
              expect(response).toEqual([{ searchterm: "blue shirt", nrResults: 1000 }]);
              done();
            }).catch((err) => console.log(err))
       })
    })

错误:错误:请求失败,状态码为 404

【问题讨论】:

    标签: reactjs jestjs axios enzyme axios-mock-adapter


    【解决方案1】:

    如果测试通过并且您只想抑制这些警告(我不知道为什么这些警告会以axios-mock-adapter 弹出),您可以这样做:

    之前

    const error = console.error;
    console.error = jest.fn();
    

    之后

    console.error = error;
    

    【讨论】:

    • 嘿@k-wasilewski!您所说的“之前”和“之后”究竟是什么意思?
    • 嗨,我的意思是在你的测试之前(如果你知道没有更多的控制台错误,如果你知道没有更多的Network error)和测试之后(恢复错误日志其他测试)。
    猜你喜欢
    • 2021-08-25
    • 2020-01-11
    • 2021-06-24
    • 2018-08-20
    • 2021-09-16
    • 2020-01-18
    • 2021-01-14
    • 2021-04-14
    • 2022-01-23
    相关资源
    最近更新 更多