我正在为一个公共(public)方法编写单元测试,该方法反过来调用用typescript(NodeJS)编写的类的私有(private)方法。示例代码classA{constructor(){}publicmethod1(){if(this.method2()){//Dosomething}else{//Dosomethingelse}}privatemethod2(){returntrue;}}现在要测试method1()我需要stubmethod2()这是一个私有(private)方法。这是我正在尝试的:sinon.stub(A.prototype,"method2");Types
编辑:更精确一点。我想测试我们团队创建的GithubAPI包装器扩展的用例。对于测试,我们不想直接使用API包装器扩展,所以我们想stub它的功能。对API包装器的所有调用都应该为测试而stub,而不仅仅是创建一个克隆stub。我在Node.js中有一个模块“github”:module.exports=function(args,done){...}我要求这样:vargithub=require('../services/github');现在,我想使用Sinon.jsstubgithub(...):varstub_github=sinon.stub(???,"github",fun
我在node.js中工作。我的应用通过node_redis模块与Redis交互。我正在使用mocha和sinon来自动测试我的应用程序。我的应用看起来像这样:...snipvarredisClient=redis.createClient(redisPort,redisHost);varsomeValue=redisClient.get("someKey");returnsomeValue;....我想stub对redisClient.get()的调用。为此,我还需要对redis.createClient()的调用stub-我认为...这是我的测试代码:...varredis=requ
序言:我已经阅读了很多SO和博客文章,但没有看到任何可以回答这个特定问题的内容。也许我只是在寻找错误的东西......假设我正在开发一个WidgetManager类,它将对Widget对象进行操作。如何使用sinon来测试WidgetManager是否正确使用了WidgetAPI,而不需要拉入整个Widget库?基本原理:WidgetManager的测试应该与Widget类分离。也许我还没有写Widget,或者Widget是一个外部库。无论哪种方式,我都应该能够测试WidgetManager是否正确使用了Widget的API,而无需创建真正的Widget。我知道sinon模拟只能在现有
varMyClassStub=sinon.createStubInstance(MyClass);MyClassStub不包含静态方法。如何解决? 最佳答案 静态方法:sinon.stub(YourClass,'yourClassMethod').callsFake(()=>{return{}})不是静态方法:sinon.stub(YourClass.prototype,'yourClassMethod').callsFake(()=>{return{}}) 关于node.js-如何在E
如果我通过vara=sinon.createStubInstance(MyContructor)创建了一个实例。如何替换varstub=sinon.stub(object,"method",func);之类的stub函数之一;.我这样做的主要原因是想要实现多个回调解决方法,如thismentioned 最佳答案 您提到的方法(sinon.stub(object,"method",func))是版本1.x中可用的方法,并且做了根据文档:Replacesobject.methodwithafunc,wrappedinaspy.Asusu
我正在尝试为使用aws-sdkNPM模块的应用程序编写一些测试覆盖率,该模块将事物推送到SQS队列,但我不确定如何正确地模拟事物。这是我目前的测试:varrequest=require('superagent'),expect=require('chai').expect,assert=require('chai').assert,sinon=require('sinon'),AWS=require('aws-sdk'),app=require("../../../../app");describe("Activities",function(){describe("POST/acti
我正在尝试运行一些需要stubjQuery.ajax的测试。我正在使用SinonJS来做到这一点,它曾经可以在旧版本的jQuery(1.x)上正常工作var$=require('jquery');varsinon=require("sinon");sinon.stub($,"ajax");//thisworkedbecause$.ajaxisdefined但是,在升级到jQuery2.x之后,当我需要模块中的jquery才能运行时,我必须包含一个窗口环境。我正在使用jsdom来完成此操作:vardocument=require('jsdom').jsdom(),window=docum
我想用barstubprocess.env.FOO。varsinon=require('sinon');varstub=sinon.stub(process.env,'FOO','bar');我很困惑。我阅读了文档,但我仍然不明白。sinonjsdocssinonjs就是一个例子,不是sinonjs也可以。 最佳答案 根据我对process.env的理解,在设置其属性时,您可以像对待任何其他变量一样简单地对待它。但请记住,process.env中的每个值都必须是字符串。因此,如果您在测试中需要特定值:it('doessomethin
我正在尝试使用sinon.js对方法进行stub,但出现以下错误:UncaughtTypeError:Attemptedtowrapundefinedpropertysample_pressureasfunction我也去了这个问题(Stubbingand/ormockingaclassinsinon.js?)并复制并粘贴了代码,但我得到了同样的错误。这是我的代码:Sensor=(function(){//AsimpleSensorclass//ConstructorfunctionSensor(pressure){this.pressure=pressure;}Sensor.prot