我正在尝试学习一些有关使用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>'
任何帮助,不胜感激!
您user32
显然将其定义为实例方法,而您显然需要将其作为class的class方法WindowsAPI
:
def self.user32(name, param_types, return_value)
Win32API.new 'user32', name, param_types, return_value
end
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句