Extension:醃渍物(Pickle)
此扩展与MediaWiki 1.42或更高的版本不兼容! 建议您不要在正常运行的网站上使用此扩展。 我们邀请MediaWiki开发者将 {{Incompatible}}模板替换为{{Incompatible|version=1.42|pledge=~~~~}}來承諾更新此扩展使其与MediaWiki 1.44兼容。 |
发行状态: 试验版 |
|
|---|---|
![]() |
|
| 实现 | 用户界面, 提取数据, API |
| 描述 | 为Scribunto提供了一个基本的现场测试框架。 |
| 作者 | |
| 最新版本 | 0.1.0 |
| 兼容性政策 | master分支维持向后兼容。 |
| MediaWiki | 1.33 - 1.35 |
| 数据库更改 | 否 |
| 许可协议 | GNU通用公眾授權條款2.0或更新版本 |
| 下載 | README, LDoc |
| 帮助 | Help:Pickle |
|
|
| 翻译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' );
完成 – 請导航至您的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()调用数量。
- Extensions incompatible with 1.42/zh
- Experimental extensions/zh
- User interface extensions/zh
- Data extraction extensions/zh
- API extensions/zh
- GPL licensed extensions/zh
- Extensions in GitHub version control/zh
- SpecTesterGadgets extensions/zh
- SpecTesteeGadgets extensions/zh
- ParserFirstCallInit extensions/zh
- ContentAlterParserOutput extensions/zh
- OutputPageParserOutput extensions/zh
- EditPage::showStandardInputs:options extensions/zh
- EditPage::showReadOnlyForm:initial extensions/zh
- ScribuntoExternalLibraries extensions/zh
- ScribuntoExternalLibraryPaths extensions/zh
- All extensions/zh
- Pages using deprecated NoteTA template

