我想在名为Debug的mixin(模块)的实例方法上运行一个基本的RSpec单元测试。以下是调试mixin的文件内容:
module Debug
public
def class_info?
"#{self.class.name}"
end
end
当我运行irb并包含调试混入和命令require_relative时/混合/调试。rb’和包括调试,然后调用调试。class\u信息
它成功返回“模块”
然后,如果我用以下RSpec单元测试运行rspec
以确认RSpec上下文可以访问混合的实例方法,则测试成功通过:
require_relative '../../mixins/debug.rb'
RSpec.describe Debug, "#class_info?" do
include Debug
before(:each) do
@class_info_instance_method = Debug.instance_methods[0].to_s
end
context "with mixins" do
it "has class info instance method" do
expect(@class_info_instance_method).to eq "class_info?"
end
end
end
最后,我将RSpec单元测试更改为如下所示,因此它实际上调用了class\u信息 调试混合的实例方法:
require_relative '../../mixins/debug.rb'
RSpec.describe Debug, "#class_info?" do
include Debug
before(:each) do
@class_info = Debug.class_info?
end
context "with mixins" do
it "shows class info" do
expect(@class_info).to eq "Module"
end
end
end
但是现在当我从命令行运行rspec
时,为什么它会返回以下错误?(注意:即使在之前完全相似的RSpec单元测试设置#1中,我检查了我可以成功访问这个调试混合实例方法)
1) Debug#class_info? with mixins shows class info
Failure/Error: @class_info = Debug.class_info?
NoMethodError:
undefined method `class_info?' for Debug:Module
注意:我已经在RubyTest GitHub repo中共享了上述代码。
Ruby-v)
- RSpec:3.5.4(
RSpec-v)
应用示例来自编程Ruby书籍的Mixins章节
当包含模块时,这些方法将成为包含类中的实例方法<代码>调试。class\u信息
不起作用,因为没有class方法class\u信息
。我也不确定你在测试中加入模块的方式是否是最好的方式。喜欢这项工作吗?
require_relative '../../mixins/debug.rb'
class TestClass
include Debug
end
RSpec.describe Debug, "#class_info?" do
let(:test_instance) { TestClass.new }
context "with mixins" do
it "shows class info" do
expect(test_instance.class_info?).to eq "TestClass"
end
end
end
我们有一个用例,我们必须从Xlst模板调用实例方法。我们使用的是Saxon-He9.6版本。穿过了这个堆栈溢出的柱子。我们尝试用Java对象作为参数pssing XML transformer,然后更新模板以调用该实例方法。但它给出了javax.xml.Transform.TransformerConfigurationException。 如果我们可以使用Saxon HE从XSLT模板中调用实例
问题内容: 我正在使用Mozilla Rhino JavaScript模拟器。它允许我将Java方法添加到上下文中,然后像调用JavaScript函数一样调用它们。但是我无法使用它,除非使用静态方法。 问题是文档的这一部分: 如果该方法不是静态的,则Java的“ this”值将对应于JavaScript的“ this”值。任何使用不正确的Java类型的’this’值调用该函数的尝试都会导致错误。
通过前面的学习,类方法大体分为 3 类,分别是类方法、实例方法和静态方法,其中实例方法用的是最多的。我们知道,实例方法的调用方式其实有 2 种,既可以采用类对象调用,也可以直接通过类名调用。 通常情况下,我们习惯使用类对象调用类中的实例方法。但如果想用类调用实例方法,不能像如下这样: 运行上面代码,程序会报出如下错误: Traceback (most recent call last): Fi
要在实例上调用方法,您必须获取实例的引用并调用该方法。该示例说明了如何获取引用和调用方法,检查 API 以获取可用方法的列表。 // 3 ways of doing the same thing $('#jstree').jstree(true) .select_node('mn1'); $('#jstree') .jstree('select_node', 'mn2'); $.
我创建了一个类,该类旨在获取2个分数,每个分数都有一个分子和分母,然后将它们相加,输出另一个分数。 当我编译程序时,我遇到了一个问题,涉及: 分数F3=新分数。添加(F1、F2);在主要方法中 错误:找不到类型分数$add 如果我将所有内容都设置为一个类,那么程序将运行,但我希望所有方法都严格位于Fraction类中,并在UseFraction类中调用Fraction。
我正在使用Saxon(如果需要,我可以使用Xalan)XSLT处理器进行一些转换。我想将下面对象的实例作为参数传递给XSLT模板。 所以我创建了这个对象。 在XSLT文件中,我将参数声明为: 现在我的问题是如何在XSLT内调用该对象的任何实例方法(即.getValue())?有可能吗?我知道我可以调用不同Java类的静态方法,但这并不完全是我想要的。 此外,是否可以在XSLT中填充Java对象,即