Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用Chai进行测试_Javascript_Testing_Chai - Fatal编程技术网

Javascript 如何使用Chai进行测试

Javascript 如何使用Chai进行测试,javascript,testing,chai,Javascript,Testing,Chai,这是一个图书捐赠应用程序,我正在尝试使用Chai测试我的代码,我不知道如何进行测试,如果我运行它,它会给我错误。 getBook(bookName):返回book对象(如果存在),否则为空 getBooksWIthPageCountMoreThanX(pageCount):返回所有页面数大于给定页面数的书籍。例如,如果用户调用pageCount=1000的函数。它应该返回pagecount>1000的所有书籍 getAuthorBooks(author):返回该特定作者编写的所有书籍。注:有些

这是一个图书捐赠应用程序,我正在尝试使用Chai测试我的代码,我不知道如何进行测试,如果我运行它,它会给我错误。


getBook(bookName):返回book对象(如果存在),否则为空

getBooksWIthPageCountMoreThanX(pageCount):返回所有页面数大于给定页面数的书籍。例如,如果用户调用pageCount=1000的函数。它应该返回pagecount>1000的所有书籍

getAuthorBooks(author):返回该特定作者编写的所有书籍。注:有些书的作者不止一位。你也应该考虑这些问题,并归还它们。

getAuthorsBookCount():返回一个映射,该映射包含作者姓名及其作者的书籍计数


BooksRepo类

class BooksRepo {
    constructor() {
        this.fse = require('fs-extra');
        this.catalogFilePath = '../data/catalog.books.json';
    }


    async readFileAsync(filePath) {
        let data = await this.fse.readFile(filePath);
        let parsedData = await JSON.parse(data);
        return parsedData;
    }



    async getBook(bookName) {
        let books = await this.readFileAsync(this.catalogFilePath);
        let book = books.find(b => b.title == bookName);
        return book;
    }

    async getBooksWIthPageCountMoreThanX(pagecount){
        let books = await this.readFileAsync(this.catalogFilePath);
        let book = books.find(b => b.pageCount > pagecount);
        return book;
    }

    async getAuthorBooks(author){
        let books = await this.readFileAsync(this.catalogFilePath);
        let book = books.find(b => b.authors.contains(author));
        return book;
    }
    async getAuthorsBookCount(){

        let authArray = [];
        let authCountArray = [];

        for (let i = 0; i < inputJson.length; i++) {
            authArray = inputJson[i].authors;
            for (let j = 0; j < authArray.length; j++) {
                authCountArray[authArray[j]] = ((authCountArray[authArray[j]] === undefined) ? 0 : authCountArray[authArray[j]]) + 1;
            }
        }

            return authCountArray[authName];


    }



    async getBooksbyCatagory(category){

        let books = await this.readFileAsync(this.catalogFilePath);
        let book = books.find(b => b.categories == category);
        return book;

    }



}



module.exports = BooksRepo ;
catalogFile:其结构示例


您收到了什么错误消息?@jpeg expect(booksRepo.getAuthorsBookCount().to.equal()^可能重复:您要测试的函数是异步的您收到了什么错误消息?@jpeg expect(booksRepo.getAuthorsBookCount().to.equal())^可能重复:要测试的函数是异步的
let expect = require('chai').expect

let BooksRepo = require('./BooksRepo');

let booksRepo = new BooksRepo();

describe("BooksRepo class test case" , ()=>{


    it('search for book ', () => {
        expect(booksRepo.getBook('Code Generation in Action')).to.equal()
    });

    it('get book with page count ', () => {
        expect(booksRepo.getBooksWIthPageCountMoreThanX(1000)).to.equal(null)
    });

    it('get book with page count ', () => {
        expect(booksRepo.getAuthorBooks('Charlie Collins')).to.equal('Charlie Collins')
    });

    it('get author and number of books he wrote ', () => {
        expect(booksRepo.getAuthorsBookCount().to.equal()
    });

    it('get Books by Catagory ', () => {
        expect(booksRepo.getBooksbyCatagory().to.equal()
    });

});
[
{
"_id": 1,
"title": "Unlocking Android",
"isbn": "1933988673",
"pageCount": 416,
"publishedDate": {
"$date": "2009-04-01T00:00:00.000-0700"
},
"thumbnailUrl": "https://s3.amazonaws.com/AKIAJC5RLADLUMVRPFDQ.book-thumb-images/ableson.jpg",
"shortDescription": "Unlocking Android: A Developer's Guide provides concise...",
"longDescription": "Android is an open source mobile phone platform based on the Linux operating ...",
"status": "PUBLISH",
"authors": [
"W. Frank Ableson",
"Charlie Collins",
"Robi Sen"
],
"categories": [
"Open Source",
"Mobile"
]
},