在我的Ruby应用程序中,我试图用RSpec测试一个用控制器参数调用的模块方法。
该模块是用于跟踪分析的EventTracker模块:https://github.com/doorkeeper/event_tracker
情况是这样的:
>
从我的控制器中,我从控制器调用该方法,如下所示:
class InvestorHomeController < ApplicationController
def do_something
track_event 'User Action'
end
end
track_event
方法在EventTracker
模块中定义,如下所示:
module EventTracker
module HelperMethods
def track_event(event_name, args = {})
(session[:event_tracker_queue] ||= []) << [event_name, args]
end
end
终止
我尝试了不同的解决方案,但都不管用。例如:
expect(controller).to receive(:track_event).with('User Action')
expect(EventTracker).to receive(:track_event).with('User Action')
第一个不起作用,因为track\u event不是控制器的方法,第二个错误如下:
RSpec::Mocks::MockExpectationError: (EventTracker).track_event("User Action")
expected: 1 time with arguments: ("User Action")
received: 0 times
有人知道如何用RSpec测试这种方法吗?
谢了D
我找到了让它工作的方法!
基本上,除了在正确的地方打“邮政”电话之外,我做的一切都是正确的。
后调用必须在以下之后完成:
expect(controller).to receive(:track_event).with('User Action')
i、 e.以下代码将正常工作:
expect(controller).to receive(:track_event).with('User Action')
post :new_user_action_post
而不是之前。
我希望能帮助某人!;)
D
所以我肯定有类似的东西在那里,但我已经搜索了一个小时,还没有找到确切的我要找的东西。假设我有一个这样的类: 我该如何制作这样的作品?
我需要测试来运行该方法。我有这样的课: 我不能改变这门课。我不能将方法的可见性从private更改为public或向类中添加另一个方法。这门课不让我写一个字。 所以我写了这个测试: 提前道谢。
问题内容: 因此,我敢肯定那里有类似的东西,但是我一直在寻找一个小时,却没有找到我真正想要的东西。说我有一堂课,看起来像这样: 我该如何做这样的工作? 问题答案: 使用Mockito,您可以像这样 监视真实对象 : 有一些陷阱,因此也请查看相关文档。
我正在测试路由器,有两个函数,我需要测试第一个函数是否被调用,第二个函数是否被调用。有方法
假设我们有这样一种方法: 在单元测试中,我们希望断言被调用过一次,而且只有一次;因此,我们可以在测试中使用另一个模拟结构来模拟它,这将为我们提供检查它是否已被调用的功能: 在单元测试中: 现在,问题是,由于是用关键字调用的,我们不能确定当我们在测试中到达断言时,它是否被调用过。 向
我在Apex中有一个触发器。如何编写检查触发器是否被调用的单元测试?