ruby - 测试 ruby 模块类方法不起作用
问题描述
我有一个这样的红宝石模块:
module SomeModule
module Account
def self.account_info
raise NotImplementedError
end
end
end
这是我的测试:
describe ExchangeClientWrapper::Account do
let(:mock_class) do
class MockClass
extend SomeModule::Account
end
end
describe ".account_info" do
it "raises a NotImplementedError" do
expect { mock_class.account_info }.to raise_error(NotImplementedError)
end
end
end
end
我收到此错误:
expected NotImplementedError, got #<NoMethodError: undefined method `account_info' for MockClass:Class> with backtrace:
到底是怎么回事?
这不起作用:
module A
module B
def self.d
puts "hi there"
end
end
end
class C
extend A::B
end
C.d
但似乎这有效:
module A
module B
def self.d
puts "hi there"
end
end
end
class C
include A
end
C::B.d
解决方案
阅读本文中解释包含、扩展和前置的参考资料,我发现它extends
已经与 Singleton 类一起使用,因此self
没有必要。
我用这段代码做了一个小测试,它删除self
了定义中的
module SomeModule
module Account
def account_info
raise NotImplementedError
end
end
end
class MockClass
extend SomeModule::Account
end
MockClass.account_info
这引发了 NotImplementedError
推荐阅读
- javascript - 如何在焦点期间更改值后关注输入的结尾
- java - 如果通过另一个对象访问对象,我应该使用聚合吗?
- r - 替换数据框列中的值
- c# - 如何更新由 webhook 触发的 azure 函数中的记录?
- npm - 无法安装 expo-cli ,抛出错误并花费大量时间
- c# - 是否可以以编程方式生成包含组织结构图的 Excel 文件?
- c++ - dtor 中的这个 unique_lock 是否有任何用途?
- javascript - 使用 Materialize-CSS 和 React 的 TypeError
- arrays - 如何改变这个 foreach 就像 for (i=0;i
我是使用 ejs 的新手,我想将我的数据库数据传递给我的 ejs 文件,但我想将 forEach 语法更改为 for(i=0;i
我找到了一个代码来显示它,但它带来了我所有的数据库数据,我只想从我的数据库中传递 4 个数据
这是我的 server.js 代码
var hotelS
- python - 如何根据字典的值(也可以是列表)动态生成 SQLite 插入查询?