草庐IT

ruby - 如何验证 RSpec 中的退出和中止?

我正在尝试为我的脚本接收到的命令行参数指定行为,以确保所有验证都通过。我的某些命令行参数将导致调用abort或exit,因为提供的参数丢失或不正确。我正在尝试类似这样的方法,但它不起作用:#something_spec.rbrequire'something'describeSomethingdobeforedoKernel.stub!(:exit)endit"shouldexitcleanlywhen-hisused"dos=Something.newKernel.should_receive(:exit)s.process_arguments(["-h"])endendexit方法

javascript - 如何使用嵌套函数(javascript、jasmine)为第 3 方库编写 mock

我是TDD的新手,我正在尝试编写使用第三方库(跨平台移动开发)的可测试代码。我想进行测试以仅检查我们的业务逻辑。不用担心它们的实现。此外,他们的库仅在native包装器中公开。由于使用js作为开发语言,我想使用jasmine进行测试并运行测试以仅在浏览器中检查我的业务逻辑。以下是我想在测试时忽略/模拟的方法模式。com.companyname.net.checkInternetAvailable(url)com.companyname.store.getValue(key)com.companyname.someother.name(whateverObj,callback)etc.,

javascript - 模拟 node.js 模块

假设我有这种情况(架构)layer1->layer2->layer3层只是普通的node.js模块(有一些导出的函数)Layer1需要layer2并调用他的函数,layer2需要layer3并调用他的函数。我想测试第1层中的函数,但也模拟第3层(我在第1层中的函数调用传播到第3层,我想模拟这个函数)。最好的方法是什么?我看过这个模块:https://github.com/thlorenz/proxyquire但我认为它不支持像我的示例那样深入到2级或更高级别时进行模拟。感谢您的任何建议! 最佳答案 我用过mockery取得了巨大的成

javascript - Jasmine - 如何模拟 history.pushState 和假事件发射?

在history.pushState的帮助下,我正在编写一个支持浏览器导航的库并且还捕获了popstateevent在浏览器中进行导航时进行通信。因为我正在尝试写Jasmine测试这个库,我想知道如何模拟history.pushState并且还伪造了popstate的发射来自window的信号?以下代码片段应该可以说明问题:库代码:varlib=(function(){functionnavigate(path){history.pushState(null,null,path);}functiononPopState(event){if(lib.callback){lib.callb

javascript - 如何验证是否使用 Selenium 在 javascript 对象上调用了某些方法?

我想用selenium验证是否调用了某些方法(带参数)JavaScript对象-一种使用JMockit的期望模拟,但在Javascript和selenium中。不幸的是,对象是被严重混淆的不透明网站性能跟踪器,我无法访问它的内部结构,所以在我看来,模拟是唯一的选择。还是我漏掉了一些明显的东西?更新:经过思考,在我看来解决方案可能是:-等待HTML完全加载-删除某些包含性能跟踪器的脚本标签-创建javascript模拟对象,其行为类似于跟踪器,但记录调用供以后使用 最佳答案 好的,终于明白了。选择的模拟框架是:jsmockito和js

javascript - 如何在 Jest 中监视 window.scrollTo?

我得到了一个非常简单的React组件,具有以下功能:componentDidMount(){window.scrollTo(0,0)}看来你不能做类似的事情window.scrollTo=jest.fn()监视scrollTo函数。因此,我想知道监视此函数并断言它已在我的测试中使用过的最佳方法是什么。谢谢 最佳答案 开个Jest,全局namespace必须通过global而不是window访问。global.scrollTo=jest.fn() 关于javascript-如何在Jest中

javascript - Sinon stub 是如何工作的?

在过去的几个月里,我一直在使用JavaScript并使用SinonJS来stub一些行为。我已经设法让它发挥作用,我使用了很多方法,一切都很好。但对于诗浓在幕后的运作方式,我还是有些疑问。我想我说的是Sinon,但这个问题可能适用于所有其他旨在模拟/stub/spy的库。过去几年我使用最多的语言是Java。在Java中,我使用Mockito来模拟/stub依赖项和依赖项注入(inject)。我曾经导入类,用@Mock注释字段并将此模拟作为参数传递给被测类。我很容易看出我在做什么:模拟一个类并将模拟作为参数传递。当我第一次开始使用SinonJS时,我看到了这样的东西:moduleUnde

javascript - 如何在 angularjs 测试中模拟 $location.host()?

我已经创建了一个包含环境信息的Env服务,我目前正在使用$location.host()来确定我所处的环境。我如何在我的测试中模拟它?我读过https://groups.google.com/forum/?fromgroups#!topic/angular/F0jFWC4G9hI,但它似乎不起作用,例如:describe("Env(environment)service",function(){varEnv;beforeEach(module('App'));beforeEach(inject(['Env',function(e){Env=e;}]));describe("forsta

javascript - 在 "Actions must be plain objects. Use custom middleware for async actions."中使用 Jest 模拟结果

我有几个Redux-Thunk风格的函数,可以在一个文件中分派(dispatch)其他操作。其中一个Action将另一个作为其逻辑的一部分进行分派(dispatch)。它看起来类似于:exportconstfunctionToMock=()=>async(dispatch)=>{awaitdispatch({type:'abasicaction'});};exportconstfunctionToTest=()=>async(dispatch)=>{dispatch(functionToMock());};在我实际遇到的情况下,这些函数都涉及更多,并且每个都分派(dispatch)多个

javascript - 在将 Squire.js 与 RequireJS 和 Mocha 一起使用时,如何避免引入全局泄漏?

我正在使用Backbone和Backbone.Marionette编写单页JavaScript应用程序。我正在使用AMD模块和RequireJS来帮助组织我的代码和管理依赖项。我也在使用Mocha作为我的TDD/BDD测试框架。一切正常,直到我想使用Sinon.JS引入stub、模拟和spy。经过大量搜索,我在testframeworksintheRequireJSwiki上找到了一个页面和Squire.js,这似乎很适合我的需要。但是,当我尝试使用Squire.js加载模块时,Mocha突然报告模块依赖项的全局泄漏。如果我直接使用Require.JS加载模块,则没有泄漏报告。例如,下