Javascript 如何使用mocha sinon模拟类异步/等待函数

Javascript 如何使用mocha sinon模拟类异步/等待函数,javascript,node.js,unit-testing,mocha.js,sinon,Javascript,Node.js,Unit Testing,Mocha.js,Sinon,如何向类编写测试用例。我有一个类,里面有两个方法。我通过创建新对象来访问路由中的此类。现在,对于测试用例,我必须模拟实际的类方法调用。我用的是西农咖啡和摩卡咖啡。它仍在调用原始类 如何将测试用例写入我的路由器 myclass1.js export default class Detector { constructor() {} setDetectorStrategy(Detector) { this.detector = Detector; }

如何向类编写测试用例。我有一个类,里面有两个方法。我通过创建新对象来访问路由中的此类。现在,对于测试用例,我必须模拟实际的类方法调用。我用的是西农咖啡和摩卡咖啡。它仍在调用原始类

如何将测试用例写入我的路由器

myclass1.js

export default class Detector {
    constructor() {}
    setDetectorStrategy(Detector) {
        this.detector = Detector;
    }
    getcontent = async(payload) => {
        console.log('kkkkkkkkkkkkkkkkkkkkkkkkkkkk');
        const res = await this.getDetails(payload);
         return res;
    }

}
在myRoute.js中

import Detector from '../services/detector';
router.post('/', async(req, res) => {
let detector = new Detector();
 detector.setDetectorStrategy(new my());

 await detector.getcontent (payload);
   res.json({});
 });

请查看下面GitHub中的示例,看看它是否有帮助

使用sinonjs创建的spy监视封装并运行server.js的服务器变量(supertest),并使用sinon的assert方法进行断言,以确定向server.js文件中定义的/about路由发出请求的次数。您可能需要修改代码以指向您的路线


您想确定您的方法是由您的路由调用的,对吗?如果是这样,我建议你监视你的班级。如果下划线方法被调用一次、两次或根本没有被调用,则可以使用Sinon进行监视并获取信息。我希望这有帮助!var-Detector=sinon.spy(函数(){return sinon.createStubInstance(Detector);});var检测器=新检测器();returns({});我尝试了这个方法,但我发现无法读取undefinedcan u的属性返回并分享您对上述结果的评论。我发现问题在于async方法。我已经创建了一个新的同步方法,我可以为它创建存根sinon.stub(detector.prototype,'method')。returns()。。当我再次改回异步时,问题就出现了。监视web服务器上的路由是一个漫长的过程。您需要使用supertest。由于我无法粘贴GitHub链接,因此我将其作为答案发布。请在答案中发布解决方案代码,而不仅仅是指向它的链接。尝试存根未定义的属性“getContent”,请通过在问题中更新它来发布错误的屏幕截图,或者提供一些附加代码或测试代码。