[英]Test all subclasses on file update
我正在學習使用PHP進行單元測試,並在tutsplus上進行了TDD會議: http ://net.tutsplus.com/sessions/test-driven-php/
每當使用Susan Buck的腳本修改文件時,我已經設置了一個ruby watchr腳本來運行PHPUnit單元測試: https : //gist.github.com/susanBuck/4335092
我想更改ruby腳本,以便除了在更新文件時測試文件之外,還將測試從該文件繼承的所有文件。 我將文件命名為Parent .php, Parent.Child .php和Parent.Child.GrandChild .php等以指示繼承(並將文件分組),以便觀察者腳本可以按名稱進行搜索。 我只是不知道該怎么做。
我想改變:
watch("Classes/(.*).php") do |match|
run_test %{Tests/#{match[1]}_test.php}
end
像這樣:
watch("Classes/(.*).php") do |match|
files = get all classes that inherit from {match[1]} /\b{match[1]}\.(.*)\.php/i
files.each do |file|
run_test %{Tests/{file}_test.php}
end
end
如何在目錄中搜索文件名? 或者,是否有更簡單/更好的方法來實現這一目標?
謝謝
編輯
我最終得到的是:
watch("#{Library}/(.*/)?(.*).php") do |match|
file_moded(match[1], match[2])
end
def file_moded(path, file)
subclasses = Dir["#{Library}/#{path}#{file}*.php"]
p subclasses
subclasses.each do |file|
test_file = Tests + file.tap{|s| s.slice!(".php")}.tap{|s| s.slice!("#{Library}")} + TestFileEnd
run_test test_file
end
end
其中“庫”,“測試”和“ TestFileEnd”是在文件頂部定義的值。 還對其進行了更改,以便它將檢測應用程序庫的子文件夾中的更改並加載適當的測試文件。
我不確定,但是我認為這會起作用:
watch("Classes/(.*).php") do |match|
subclasses = Dir["Classes/#{match[1]}*.php"]
filenames = subclasses.map do |file|
file.match(/Classes\/(.*)\.php/)[1]
end
filenames.each do |file|
run_test "Tests/#{file}_test.php"
end
end
這可能不是清潔的方式,但應該可以。
第一行從子類中更改的文件名開始,將所有相對路徑保存到Classes目錄中的文件。 在地圖塊中,我使用正則表達式僅獲取文件名,而沒有任何文件夾名稱或.php擴展名。
希望這對您有幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.