扩展程序:Pickle

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

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

该扩展名被称为“Pickle”,因为您可以随意选择代码。 这也是一场文字游戏;gherkins用于pickles.。在您的代码上。 小黄瓜也是一种“步骤”式测试的语言,一种验收测试,所以你可能会说这类代码片段是“pickles”。

从用户角度对pickle扩展的概述可以在Help:Pickle 处找到。

安裝

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


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

使用

扩展可以配置为测试的隐式或显式。 隐式风格在describe()调用上搭载安装,但这取决于函数getfenv()调用。 unknown error

依赖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()调用数量。