问题标签 [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 - 是否可以存根 nokogiri xml 搜索方法?
假设我有一个看起来像这样的方法:
是否可以创建一个 xml_resp_mock 并将链式调用存根.at('StatusCode').text
——以返回“成功”?如果可能的话,我不确定要使用的语法。
ruby-on-rails-3 - 从模型中分离控制器测试
在编写底层模型类之前编写控制器测试和类是否可能(并且合理)?我以为我看到了有关如何做到这一点的说明,但现在我找不到食谱了。
例如,考虑以下控制器:
我可以在创建基础前提模型和前提之前测试此控制器代码吗?我知道以下内容行不通——你将如何重写它(如果可能的话)?
更新
我想得越多,我就越确信我确实需要定义这个Premise
类——PremisesController
代码需要引用它。所以我将把我的问题改为“是否有必要创建底层premises
数据库表才能运行PremisesController
测试?”
在这一点上,我没有看到解决它的好方法(不更改PremisesController
代码,这会破坏测试点)。例如,调用respond_with
调用@premise.has_errors?
依次访问数据库以获取列名。除非我愿意对内部方法存根ActiveRecord
,否则我看不到如何避免对数据库的影响。
但我很乐意以其他方式展示。
ruby-on-rails - 你如何存根特定模拟实例的所有方法
我有一个由第三方处理的特定模拟。我只想检查是否已返回相同的模拟。
但是,第三方调用了我的测试并不真正关心的数组方法和保存方法。有没有办法告诉我的模拟它期望/存根所有方法都与那个特定的模拟实例有关?
例如。
谢谢!
编辑
有关该问题的更多信息:
测试:
正在测试的代码:
我需要模拟以下与我正在测试的内容没有直接关系的内容:
ruby-on-rails - 在 RSpec / Rails 中存根类方法时遇到问题(并在存根上使用动态返回)
晚上好,
我试图在我的“模拟”类中测试一个相当长的方法,它调用类方法“is_male_alive?” 和“is_female_alive?” 在我的“年龄”课上几百次。这些类方法的返回值基于统计信息,我想将它们存根以返回特定值,以便我的测试每次运行都相同。
年龄.rb:
(女性版基本相同,只是一些不同的常数)
在我的“模拟”课程中,我执行以下操作:
在模拟的每次迭代中 - 本质上它只是传递一个年龄(例如 is_male_alive?(56) )并返回真或假。
我想删除这两种方法,以便:
- is_male_alive 吗?对于小于 75 的任何参数返回 true,否则返回 false
- is_female_alive?对于小于 80 的任何参数返回 true,否则返回 false
我尝试了以下方法,看看我是否有能力将它存根 (simulation_spec.rb):
但我收到以下错误:
我也不知道如何设置它,以便根据参数动态生成存根返回值。有没有办法用proc来做到这一点?
有没有办法模拟整个 Age 类(而不是仅仅模拟 Age 类的单个实例?)
谢谢你的帮助!!
更新 1
看起来这个方法被调用存在问题......这真的很令人困惑。为了真正查看它是否被调用,我在方法中抛出了“raise ArgumentError”。
开发环境(控制台):
所以它显然是在开发环境中调用这个方法,因为它抛出了参数错误。
在我的测试中再次运行它,它仍然说该方法没有被调用......我在下面使用你的代码:
我也试过这个
有什么想法吗?
logging - RSpec:如何测试 Rails 记录器的消息期望?
我正在尝试测试 Rails 记录器是否接收到我的某些规范中的消息。我正在使用Logging gem。
假设我有这样的课程:
和一个像这样的规范:
我收到以下失败消息:
我尝试了几种不同的方法来让规范通过。这适用于例如:
但是必须设置一个这样的可访问实例变量似乎在这里摇尾巴。(实际上,我什至不确定为什么将 logger 复制到 @log 会使其通过。)
什么是测试日志记录的好解决方案?
ruby - should_receive 会做我没想到的事情吗?
考虑以下两个简单模型:
以及以下 Rspec 测试:
当我运行这个测试(或者,更确切地说,一个类似的测试)时,存根似乎没有工作:
正如您可能猜到的那样,失败出现在上面标有“此处错误”的行上。当该should_receive
行被注释掉时,这个错误就消失了。这是怎么回事?
ruby - 当一个对象的构造函数构建另一个对象时存根
所以我有一些代码,大大简化,看起来像这样:
换句话说,当我用选项初始化 A 时,它会创建一个 B 并将一组修改后的选项传递给它。
我想测试 B.new 是否获得了正确的论点。现在,我正在这样做,使用 RSpec/RR:
但这有两个问题。
首先,我无法B
使用实际选项实例化实际副本。如果我在块内调用 B.new,它会调用存根版本并循环直到堆栈弹出。我可以@b = B.new
在 stubbing 之前设置,但是我还不知道将要传入的选项,从而破坏了测试的重点。
(在有人叫我之前:是的,在严格的单元测试教条中,对 A 的测试应该剔除 B 中的任何方法,并且需要大量剔除意味着你的代码首先是糟糕的。)
其次,将它放在测试的设置中感觉不对should
,而不是之后放在单独的it ... do ... end
块中。但是由于我不能创建一个实际的B
(见上文),我也不能真正询问它的构建后状态。
有任何想法吗?
javascript - Javascript单元测试依赖项-当依赖对象更改时如何使测试失败
我有一个依赖于模型属性的控制器。我编写了一个测试该控制器并存根模型的测试,当模型属性名称更改时,如何使我的控制器测试失败?
这是一个例子:
模型:
控制器:
控制器测试:
只要“name”属性更改为其他内容,例如“name2”,我希望此测试失败。
有人对如何在 javascript 中执行此操作有很好的建议吗?
谢谢, 夏
unit-testing - 存根测试类中的方法以测试另一个方法
我发现 stub 和 mock 在测试中非常有帮助。但我想知道一件事。我想一个例子会清楚地表明这一点。
做这样的事情是明智的吗?测试类的存根方法。或者它可能违反了一些规则?
PS。我无法重构代码
javascript - 轻松清理 sinon 存根
有没有一种方法可以轻松地重置所有可以与 mocha 的 beforeEach 块一起干净地工作的 sinon spys 模拟和存根。
我看到沙盒是一种选择,但我看不出如何为此使用沙盒