我需要为一个具有私有方法并接受单个Argument的模块编写RSpec测试用例。
module x
private
def fun(para)
end
end
我有一个规范文件,我试图在其中写一个这样的案例。para和params是我们可以说的论据。
RSpec.describe x do
class spec
include x
def initialize(params)
@params = params
end
end
describe "describe" do
context "context" do
it "should not truncate any normal text value" do
obj = spec.new(params)
# first
expect('dummy text').to obj.send(:fun).with(para)
# second
expect(obj).to receive(:fun).with(para);
#third
retr = obj.send(:fun).with(para);
expect retr.to eq('dummy text')
end
end
end
end
首先,第二和第三,我曾经得到输出,但这三种方法都不起作用。他们都犯了一些错误。伙计们,你们能帮我明白我做错了什么吗?我该如何解决此问题?
如果一个方法是private
,您不应该直接测试它,但在某些情况下,为什么不呢。🙂我不知道你的fun
方法应该做什么,但这里有一些帮助。
RSpec.describe x do
class MySpec
include x
def initialize(params)
@params = params
end
end
describe "#fun" do
subject { my_spec.send(:fun).with(para) }
let(:my_spec) { MySpec.new(params) }
let(:params) { { foo: :bar } }
let(:para) { 'dummy text' }
it "should not truncate any normal text value" do
expect(subject).to eq(para)
end
end
end