草庐IT

ruby - 我可以使用 rspec 模拟来 stub 版本常量吗?

我的代码只需要在特定版本的ActiveRecord上运行(解决旧AR库上的错误的方法)。此代码测试ActiveRecord::VERSION常量的值以查看它是否需要运行。有没有办法在rspec中模拟这些常量,这样我就可以测试该代码路径,而无需在测试机器上安装正确的ActiveRecordgem? 最佳答案 我最终编写了一个辅助方法来让我在执行代码块时覆盖常量:defwith_constants(constants,&block)constants.eachdo|constant,val|Object.const_set(consta

ruby - Rspec:访问 Klass.any_instance.stub block 内的实例

Feature:testrandomnessInordertomakesomecodetestableAsadeveloperIwantArray#sampletobecomeArray#first如果可以访问Klass.any_instance.stubblock中的实例,那将是可能的。像这样:Array.any_instance.stub(:sample){instance.first}但是那个afaik是不可能的。无论如何,场景需要! 最佳答案 我找到了一个hacky解决方案,我已经在rspec版本2.13.1和2.14.4上

ruby - 有什么方法可以验证模拟或 stub 是否有效?

假设我有一个用以下伪代码定义的类和方法classBookdefquick_inforeturntitle+""+authorendend如果我正在为某个使用此Book类的other类编写单元测试,我会为Book的方法调用创建一个stub。快速信息。现在我认为,如果我的Book类发生变化,例如,如果quick_info方法重命名为short_description,就会出现问题。我的单元测试仍将使用quick_info,看起来我的测试通过得很好,但实际上它应该失败。我想知道是否可以运行一些东西来验证我测试中的stub/模拟是否确实由正确的类和方法组成。也许像这样的东西可以在持续集成服务器

ruby - 使用 webmock/rspec stub 多部分请求

我一直在尝试使用webmock对多部分请求进行stub,但没有找到令人满意的解决方案。理想情况下,我想将请求stub如下:stub_request(:post,'http://test.api.com').with(:body=>{:file1=>File.new('filepath1'),file2=>File.new('filepath2')})然而,这似乎不起作用,RSpec提示请求没有被stub。打印非stub请求:stub_request(:post,"http://test.api.com").with(:body=>"--785340\r\nContent-Disposi

ruby - RSpec 3 : How to stub methods and constants from code we have yet to build/add?

我们正在从我们构建的名为DBQuery的gem中重构一个名为DataSourceIntegrations的Ruby应用程序。我正在将一些DBQuery代码迁移到DataSourceIntegrations中。我正在构建的部分取决于DBQuery,它将在单独的步骤中添加。与此同时,我需要编写RSpec测试来验证DBQuery代码是否被正确调用,所有这些都没有DBQuery。我有的是:代码—gem密码—moduleDBQueryclassQueryMAX=1000defretrieve_users#ReturnsanarrayofuserIDsendendend应用程序代码—moduleI

ruby-on-rails - 是否可以在父类中 stub 一个方法,以便所有子类实例都在 rspec 中 stub ?

给定父类Fruit及其子类Apple和Banana,是否可以将方法foostub>在Fruit中定义,以便在Apple和Banana的任何实例上对方法foo的任何调用都被stub?classFruitdeffooputs"somemagicinFruit"endendclassBananaFruit.any_instance.stubs(:foo)没有工作,看起来它只是Fruit实例的stub。除了为每个子类调用stub之外,是否有一种简单的方法可以实现这一点?发现此链接提出了类似的问题,但看起来尚未得到解答。http://groups.google.com/group/mocha-d

ruby - 如何 stub 发生在 File.open block 内的 file.read?

如何stubfile.read调用以便它返回我想要的内容?以下不起作用:defwrite_somethingFile.open('file.txt')do|f|returncontents=f.readendend#rspecdescribe'stub.read'doit'shouldwork'doFile.stub(:read){'stubbedread'}write_something.should=='stubbedread'endend看起来stub正在应用于File类,而不是我的block中的文件实例。所以File.read按预期返回stubbedread。但是当我运行我的规

java - Mockito:使用有界通配符返回类型的 stub 方法

考虑这段代码:publicclassDummyClass{publicListdummyMethod(){returnnewArrayList();}}publicclassDummyClassTest{publicvoidtestMockitoWithGenerics(){DummyClassdummyClass=Mockito.mock(DummyClass.class);ListsomeList=newArrayList();Mockito.when(dummyClass.dummyMethod()).thenReturn(someList);//Compilercomplain

java - Mockito:使用有界通配符返回类型的 stub 方法

考虑这段代码:publicclassDummyClass{publicListdummyMethod(){returnnewArrayList();}}publicclassDummyClassTest{publicvoidtestMockitoWithGenerics(){DummyClassdummyClass=Mockito.mock(DummyClass.class);ListsomeList=newArrayList();Mockito.when(dummyClass.dummyMethod()).thenReturn(someList);//Compilercomplain

java - 如何使用 ArgumentCaptor 进行 stub ?

在Mockitodocumentation和javadocs它说ItisrecommendedtouseArgumentCaptorwithverificationbutnotwithstubbing.但我不明白ArgumentCaptor如何用于stub。有人可以解释上面的语句并展示如何使用ArgumentCaptor进行stub或提供一个链接来说明它是如何完成的吗? 最佳答案 假设以下方法进行测试:publicbooleandoSomething(SomeClassarg);Mockito文档说您应该不以这种方式使用captor