问题标签 [stubbing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - 存根方法在 before_create 回调中返回 nil
我在我的模型中测试 before_create 回调处于死胡同。
我的规格
这是我的模型的代码
正在调用 before_filter 方法,但在该回调中,帐户方法的存根似乎不起作用。我测试过
果相同。这是怎么回事?顺便说一句,我正在使用 rails 2.3 和 rspec-rails 1.3.4
ruby-on-rails - RSpec Stub 不涵盖多个嵌套的 Describe 块
我有一个结构如下的测试套件:
第一个测试有 DateTime(now) == base_time,但第二个测试为 DateTime(now) == 我的计算机的日期时间,表明存根不再有效。将stub!
调用移动到每个describe
循环中可以解决问题,但我想了解为什么它不能按书面方式工作。
ruby-on-rails - 评论属于_已删除的用户。如何关联“占位符”?
我的评论是由用户放置的。评论belongs_to :user
和用户has_many :comments
。
但是可以删除用户。如果完成,我宁愿不删除他们的评论,而是将他们的评论与一个 Dummy 用户相关联。
我可以想到几种方法:
- 在加载评论时,如果未找到相关用户,则在内存中创建一个带有虚拟数据的用户。
- 在加载评论时,如果未找到相关用户,则从数据库中选择一个预定义的用户。
- 删除评论时,将所有评论与数据库中的预定义用户相关联;通过一些后期过滤器。
我的感觉是第一是最干净的;因为其他两个需要数据库中的用户,该用户将在代码中硬连线。如果用户 18394 是那个“特殊”用户,我需要为那个特殊用户提供各种安全网。
cucumber - 模拟和存根可以在黄瓜步骤之间持续存在吗?
我有一个依赖于 3rd 方 API 的应用程序PSC
,但我想将我的黄瓜测试与对 PSC 的 API 调用隔离开来。
所以,我写了几个黄瓜步骤:
...这些存根应该做的是让 Cucumber 场景认为 API 调用正在工作。但是,存根似乎不会在步骤之间持续存在,因此我的场景中的进一步步骤不会获得存根返回值,它们会尝试进行实际的 API 调用,因此它们会失败。
有没有办法让存根至少在整个场景中持续存在?我已经在其他 Cucumber 测试中成功使用了存根,所以我知道它们通常可以工作,但这是我第一次编写一个 Cucumber 步骤,其全部目的是提供一个存根。
ruby-on-rails - 测试时我应该在 Factory girl 中还是在规范文件中存根模型?
几乎我遇到的每个规范文件最终都会编写如下内容:
我的意思是,我从 Factory.build 获得的模型是完全有效的。但是,如果我不存根那些东西,它会将东西保存在文件系统中,并验证我没有测试的东西......
我的意思是,我认为做这样的事情会更干净:
如果在工厂内存根甚至是可能的。
存根模型的正确方法是什么?
ruby-on-rails - 对控制器测试进行 Stubbing Warden
我在测试控制器和使用 Warden 时遇到问题。
所有示例都指向 stubbing request.env['warden']
。当我调用时,这会导致我的控制器出现问题env['warden']
,然后返回nil
。
举个粗略的例子,使用这个:
还有一个简单的前置过滤器,如下所示:
我得到一个nil
.
我只是设法让它使用controller.env['warden'] = ...
它并且它有效。这是有道理的,因为它位于控制器级别,所以我想我的问题是在我看过的所有示例中它不起作用。
我有这个spec_helper
:
任何帮助都会很棒!
c# - 如何使用 Rhino 使用 ref 参数对返回 void 的方法进行存根
如果它们返回 void,我找不到使用 ref 参数存根方法的方法,如下例所示:
你有什么主意吗?
谢谢, 斯泰尼奥
ruby - 我应该使用什么策略来单元测试读取 ruby (rspec) 中的文件?
我有一个 ruby 方法,它逐行处理一个非常大的文件(即我无法将文件加载到内存中),如下所示:
根据最佳实践,我不希望这种方法对文件系统有任何依赖。我以前使用过存根,但我不确定我将如何在这里使用它。我想我会使用相当于:
我只是不确定 {something} 是什么。
我正在使用 rspect,任何帮助将不胜感激。谢谢。
zend-framework - Zend Framework 应用程序中 PHPUnit 中的存根和模拟
我是 Zend 框架和 PHPUnit 的新手。我正在将遗留应用程序转换为 MVC 架构并尝试编写单元测试。我对单元测试概念有些熟悉,但一般都坚持使用 stubbing 和 mocking。例如考虑以下
在我试图测试的控制器操作中,我传入了一个成员 ID。然后我使用 ID 初始化一个成员对象。然后我调用一些与成员对象关联的方法并将返回值分配给视图对象。
如何在我的测试中模拟 $member 变量,以便我可以自定义方法返回值?
如果我在这里的理解不正确,我将不胜感激一些指导。
谢谢!
ruby-on-rails - 你如何存根 ActiveRecord::Base 方法而不假设它是如何使用的?
ActiveRecord::Base
有一个很大的 API,有多种查找和保存对象的方法。例如,您的AR::B
对象可能已从多个方法实例化:
Foo.new(…)
Foo.create(…)
Foo.find(…)
Foo.find_by_sql(…)
Foo.find_[all_]by_*(…)
bar.foos
(协会)- ……当然还有关于关联的查找器方法
同样,有问题的对象可能会通过几种不同的方法持久化:
foo.create
或者foo.create!
foo.save
或者foo.save!
foo.update_attributes
或者foo.update_attributes!
现在,在编写单元测试时,最好将外部方法调用存根,这样您的测试就可以专注于相关方法的业务逻辑。然而,当涉及到使用AR::B
对象时——例如在控制器单元测试中——似乎你必须提交上述方法之一,而实际上就方法的业务逻辑而言,它不应该是重要的您选择的。
您是否必须将您的方法的行为与其实现紧密结合起来,还是我错过了一些简单的东西?