gpt4 book ai didi

ruby-on-rails - 如果文件被删除,如何在 rspec 中进行测试?

转载 作者:太空宇宙 更新时间:2023-11-03 18:05:57 25 4
gpt4 key购买 nike

我想知道如何在 rspec 中测试特定文件是否被删除。这是我正在测试的代码

def check_status
filename = File.join('test', 'status.txt')
File.delete(filename ) if File.exist?(filename)
end

这里是测试:

before do
allow(File).to receive(:exist?).and_return(true)
allow(File).to receive(:delete)
end

it {expect(File).to receive(:delete).with("test/status.txt") }

我遇到了错误

(File (class)).delete("test/status.txt")
expected: 1 time with arguments: ("test/status.txt")
received: 0 times

你能帮我解决这个问题吗?我确定我的代码删除了该文件,但在测试中它收到了 0 次。

最佳答案

从您的规范来看,您似乎在正确地模拟和 stub ,但您从不调用 check_status,因此不会使用 stub 和模拟。您可以将示例更改为:

it 'deletes the file' do
expect(File).to receive(:delete).with("test/status.txt")
MyModel.check_status
end

最好还是用一个实际的文件来测试它,而不是模拟和 stub ,这样它也可以测试文件是否位于正确的位置,您是否拥有必要的权限等。

关于ruby-on-rails - 如果文件被删除,如何在 rspec 中进行测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45549434/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com