Jump to content

Extension:醃渍物(Pickle)

本頁使用了標題或全文手工轉換
From mediawiki.org
This page is a translated version of the page Extension:Pickle and the translation is 100% complete.
MediaWiki扩展手册
Pickle
发行状态: 试验版
px
实现 用户界面, 提取数据, API
描述 为Scribunto提供了一个基本的现场测试框架。
作者
  • John Erling Blad (Jeblad留言)
最新版本 0.1.0
兼容性政策 master分支维持向后兼容。
MediaWiki 1.33 - 1.35
数据库更改
许可协议 GNU通用公眾授權條款2.0或更新版本
下載
README, LDoc
帮助 Help:Pickle
  • $wgIndicator
  • $wgLogEntry
  • $wgExtractor
  • $wgCategory
  • $wgTAP
  • $wgInvokeSubpage
  • $wgTranslationPath
  • $wgDefaultNamespace
  • $wgNeglectSubpages
  • $wgObserverID
  • $wgSetup
  • $wgExtractStatus
  • $wgExtractorPath
  • $wgTranslationFollows
  • $wgRenderTypes
  • $wgRenderPath
  • $wgRenderStyles
翻译Pickle扩展

“Pickle”(或“行为驱动开发”、“BDD”、以前的“Spec”)扩展是Scribunto 的“Spec”风格测试的扩展。 规范类型测试与Rspec、Busted和其他类似测试框架中的单元测试类型相同。 它将为PHP和一些Lua模块及其本地化提供非常精简的集成。 实际的代码仍然是有效的Lua,所有的编辑工具都可以正常動作,除了在各种编辑器中缺少的智慧感知技術的定义之外。

该扩展名被称为“Pickle”,因为您是在挑剔(pick on)你自己的代码。 这也是在玩文字游戏;醃黃瓜就是用于醃漬物(pickles)。 而醃黃瓜也是一個“步骤”式测试的语言,是验收测试的一种,所以你也可以说这类代码片段是“醃漬物(pickles)”。

以用户角度对pickle扩展的概述,可以在Help:Pickle 上看到。

安裝

pickle依赖于Scribunto 的扩展。 要重新创建基于Vagrant的开发环境,请参见Pickle: Topics/Vagrant


  • 下载文件,并将其放置在您extensions/文件夹中的Pickle目录内。
  • 請新增下列代码到您的LocalSettings.php 文件的底部:
    wfLoadExtension( 'Pickle' );
    
  • Yes 完成 – 請导航至您的wiki上的Special:Version,以验证此扩展已成功安装。

使用

本扩展可被配置为隱式測試風格或顯式測試風格。 隱式風格將安裝操作附加於describe()的呼叫之上,但此機制取決於getfenv()能呼叫能否正常運作。 Scribunto擴充功能限制了getfenv()的呼叫,根據Extension:Scribunto/Lua参考手册#与标准Lua的不同之处的說明,其行為並不完全可預測,因此僅顯式風格能正常運作。

依赖getfenv()的原因是函数是在调用describe()函数“之前”构建的,因此调用运行时环境在缺少全局函数的情况下是被束縛的。 要在正确的运行时环境中插入全局函数,请使用getfenv()调用describ()。 如果没有getfenv()调用,则在创建函数时必须存在正确的运行时环境。 因此,调用describe()必须安装全局函数。

样式之间的切换由配置{ "Setup": "implicit" } or { "Setup": "explicit" }完成。

如果你有一个像“模块:HelloWorld”这样的模块,这是一个无处不在且非常讨厌的例子,它将被编码为

local p = {}

function p.helloWorld()
	return "Hi there!"
end

return p

然后在/plickle子页面上,您可以像下面这样测试

隐式
return describe 'Hello world' (function()
	subject .helloWorld()
	it 'says hello' (function()
		expect :toBe("Hi there!");
	end)
end)
显式
mw.pickle:install()

describe 'Hello world' (function()
	subject .helloWorld()
	it 'says hello' (function()
		expect :toBe("Hi there!");
	end)
end)

return mw.pickle:reports()

隐式表单删除了开头和结尾的行,return语句下移到代码的新末尾。

可能还会有其他更改,比如tap()调用的可用位置,以及可以进行的describe()调用数量。