javascript - 尝试使用 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>`
})
}
解决方案
推荐阅读
- java - 在 Java 控制台中创建游戏 - CapitalFinder [建议和帮助]
- c++ - 在显式特化中限制声明可以是什么的规范规则在哪里?
- python - 如何在 Tkinter 中添加 Mac 内置声音
- python - 如何根据存储在另一个数据框中的子字符串和行数来过滤这个熊猫数据框?
- java - 大型多部分/表单数据无法传输到后端?
- javascript - 如果值为 < 或 > 将单元格的颜色更改为另一个表格单元格值 - 仅适用于第一行
- html - 如何使用 css 创建棋盘格图案的棋盘?
- arrays - 当使用 fgets() 存储用户输入时,它会跳过第一个选项并转到下一个用户输入选择
- gaussian - 高斯分布的积分
- javascript - JS:从本地存储中删除/隐藏按钮文本