ruby Rspec如何通过示例方法模拟函数调用

dz6r00yl  于 2022-11-04  发布在  Ruby
关注(0)|答案(1)|浏览(168)

我正在尝试测试一个使用示例变量来调用featureEnabled方法的方法。我正在尝试为此编写一个rspec单元测试。我正在allow语句中使用下面的设置。不确定如何执行此操作
异常:=〉#〈无方法错误:未定义nil的'feature_enabled?'方法:NilClass〉

Api.controllers :Customers do
 @domain = current_account.domain

 def main
    t1 =  @domain.featureEnabled?("showPages")
    blah

测试项目:

RSpec.describe ApiHelpers do
    describe "#find_matching_lists" do
        let(:domain) { Domain.new }

        it "madarchod3" do
            allow(domain).to receive(:featureEnabled?).with("showPages").and_return(true)
        end
    end
2hh7jdfx

2hh7jdfx1#

在块中定义的变量是该块的局部变量,它们不存在于该块之外。
你遇到的问题是,你用let创建的domain变量只在传递给describe的块中可见。你的测试必须在describe块中定义,这样它才能访问这个变量,也就是说,这应该是可行的:

describe "#main" do
    let(:domain) { Domain.new }

    it "check if feature enabled" do
        allow(domain).to receive(:featureEnabled?).with("showPages").and_return(true)
    end
end

相关问题