首页 > 解决方案 > 尝试使用 await 测试使用 mocha 和 chai 获取

问题描述

我打算用摩卡来测试法奇。我正在使用mocha 和 chai 测试 fetch 来开始,但一直遇到多个错误。

这是测试代码:

var jsdom = require('mocha-jsdom')
global.document = jsdom();
const chai = require( 'chai' ).assert;
const fetch = require("node-fetch");
const chaiHTTP = require("chai-http");
const index = require('../client/js/index');

chai.should();
chai.use(chaiHTTP)

describe('Index', function(){

  it( "renders book data ", async () =>{
        await fetchBooks()
        .then(() => {
          expect(renderBooks).to.have.been.called();
        })
  })
})

这会引发以下错误:

    TypeError: Cannot read property 'querySelector' of undefined

在执行脚本的阶段,选择器可能不会返回任何元素。不知道为什么。

//index.js
function fetchBooks(){
  fetch(`https://anapioficeandfire.com/api/books`)
    .then(res => res.json())
    .then(renderBooks)
}

const main = document.querySelector('#main')
function renderBooks(data) {
  data.forEach(book => {
    h2.innerHTML = `<h2>${book.name}</h2>`
  })
}

标签: javascripttestingmocha.jsfetchchai

解决方案


推荐阅读