gpt4 book ai didi

ruby - 在 rspec 中定义 `after` 别名的正确方法是什么?

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

通常 beforeafter 钩子(Hook)被假定为分别是“初始化”和“清理”代码。它们应该发生在“测试本身之外”。

我发现自己处于一种情况,我想使用 after 作为上下文中所有测试的最后一步。但由于 after 通常意味着“清理”,恐怕我的测试不会非常明确。这是一个示例:

describe "when removing" do
let!(:request) do
stub_request(:delete, "http://localhost:4567/containers/#{container.id}").
to_return(status: 200)
end

# returns an http response
subject { client.remove(container.id) }

it { should be }
it { should include('id' => container.id) }

after { expect(request).to have_been_made }
end

我想将最后一个 after 重命名为更明确的名称,例如 invariant ,以表明它是测试的一部分。我已经尝试在我的规范助手上这样做:

# spec_helper.rb

Rspec.configure do |c|
...
end

RSpec::Core::Hooks.class_eval do
alias_method :invariant, :after
end

要求 spec_helper 似乎不会引发任何错误,但是当我运行测试时用 after 替换 invariant 我在运行测试时得到 "undefined method 'invariant' for #<Class:0x007f9872b46588> (NoMethodError)"

最佳答案

似乎没有简单的方法来做到这一点,只需使用before/after

关于ruby - 在 rspec 中定义 `after` 别名的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21088534/

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