未定义的方法-从另一个文件中调用一个文件中的类

Orphid

我正在尝试学习一些有关使用Ruby&Cucumber进行GUI测试的知识,部分是跟随Ian Dees撰写的一本书“使用Ruby进行脚本化GUI测试”。我是Ruby的新手,我正面临着一个似乎很简单的问题-未定义的方法。我有两个类,每个类在不同的模块中。第一个类将处理Win32API调用,第二个类代表应用程序的顶层(启动,关闭,查找窗口等)。它们将像页面对象一样工作,将UI交互逻辑与测试逻辑分离。我在Windows API类上获得了针对user32的未定义方法:

#Win32API class

require 'Win32API'

class WindowsAPI

    def user32(name, param_types, return_value)
        Win32API.new 'user32', name, param_types, return_value
    end

    @find_window = user32 'FindWindow', ['P', 'P'], 'L'

end

第二:

#Application class

require_relative 'WindowsAPI'

class VideoLibrarian
    @main_win_title = "VidLibMainWin"
    attr_accessor :main_win_handle, :win_api

    def initialize
        @win_api = WindowsAPI.new
    end

    def Start()
        system 'start "" "C:/Users/VideoAnalyser.exe"'
        sleep 0.2 while (@main_win_handle = win_api.find_window.call nil, @main_win_title) <= 0
    end

end


vl = VideoLibrarian.new
vl.Start

完整的堆栈跟踪/错误消息是:

C:/Users/Ruby Scripts/vidlibtests/WindowsAPI.rb:11:in `<class:WindowsAPI>': undefined method `user32' for WindowsAPI:Class (NoMethodError)    
from C:/Users/Ruby Scripts/vidlibtests/WindowsAPI.rb:5:in `<top (required)>'
from C:/Users/Ruby Scripts/vidlibtests/VideoLibrarian.rb:3:in `require_relative'
from C:/Users/Ruby Scripts/vidlibtests/VideoLibrarian.rb:3:in `<main>'

任何帮助,不胜感激!

马里克·利普卡(Marek Lipka)

user32显然将其定义为实例方法,而您显然需要将其作为class的class方法WindowsAPI

def self.user32(name, param_types, return_value)
  Win32API.new 'user32', name, param_types, return_value
end

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在另一个文件的另一个类中调用 php 方法?

如何从另一个.java文件中的另一个类调用方法?

如何从另一个 python 文件中的一个 python 文件中的类调用方法

覆盖另一个文件中的类的方法

Python - 在另一个文件中的类中调用定义

从CSHTML文件中调用另一个类中的方法

一个js文件中定义的功能在另一个js文件中未定义

函数在同一个文件中定义但在另一个文件中未定义

如何从Python中的另一个文件调用类方法?

在另一个文件中调用类方法时,是否必须提供self的值?

Python-如何从另一个新修改的python文件中调用类方法

如何从另一个类中迅速调用另一个方法?

在Ruby的另一个类中的一个类中调用方法

传递给另一个.js文件中的函数时,属性未定义

golang在另一个文件中声明的“未定义”功能?

在另一个文件中声明的“未定义”功能?

在具有来自另一个文件的内部数组的函数中未定义

Repaint()方法在另一个类中调用

从UIButton中的另一个类调用方法

在PHP的另一个类中调用方法

在两个单独的文件中另一个类的类方法朋友

从Python 2.7中的另一个类方法调用一个类方法

从另一个文件调用时找不到在一个文件中定义的函数

从另一个类中的一个类调用方法

如何在另一个类中调用一个类的main()方法?

从另一个类中的一个类调用方法

如何从另一个QML文件调用QML文件中定义的Javascript函数?

如何在python中的另一个文件中调用类的方法[单元测试]

从另一个文件中导出TypeScript类,而不是在文件中定义