Extension:Pickle

This page is a translated version of the page Extension:Pickle and the translation is 100% complete.
Other languages:
English • ‎Türkçe • ‎español • ‎norsk bokmål • ‎norsk nynorsk • ‎日本語
Manual for MediaWiki-utvidelser
OOjs UI icon advanced.svg
Pickle
Utgivelsesstatus: eksperimentell
px
Implementasjon Brukergrensesnitt, Datauthenting, API
Beskrivelse Gir grunnleggende pickle-testing for Scribunto på nettstedet.
Forfatter(e)
Kompatibilitetsregler master
Databaseendringer Nei
Lisens GNU General Public License 2.0 eller senere
Last ned
README, LDoc
Oversett utvidelsen Pickle
Sjekk bruk og versjonsmatrise.

Pickle (eller Oppførselsdrevet utvikling, tidligere Spec) utvidelsen er en utviding for «spec» type testing i Scribunto . Spec-type testing er samme type enhetstesting som blir gjort i Rspec, Busted og andre lignende testrammeverk. Den vil tilby et veldig tynt integrasjonslag mot PHP og noen få Lua-moduler og tilhørende lokaliseringer. Den faktiske koden er fortsatt gyldig Lua, og alle redigeringsverktøy vil fungere, med unntak av manglende definisjoner for intellisense i de forskjellige editorene.

Utvidelsen kalles Pickle fordi du plukker på din kode. Det er også et spill med ord; sylteagurk (gherkin) er brukt for pickles Gherkin er også et språk for «step»-stil testing, en type akseptansetesting, så du kan si at disse typene av kodesnutter er pickles. En eller annen gang i fremtiden så kan utvidelsen bli utvidet med step-stil testing, og da vil navnet passe enda bedre.

En oversikt over pickle-utvidelsen fra et brukerperspektiv finnes på Help:Pickle .

Installering

Koden på Phabricator kan henge etter koden på GitHub: jeblad/Pickle, den siste er brukt under utviklingen og kan være ustabil. Spec avhenger av Scribunto -utvidelsen. For å gjenskape det Vagrant-baserte utviklingsmiljøet, se Pickle: Topics/Vagrant.


  • Download and place the file(s) in a directory called Pickle in your extensions/ folder.
  • Add the following code at the bottom of your LocalSettings.php:
    wfLoadExtension( 'Pickle' );
    
  •   Done – Navigate to Special:Version on your wiki to verify that the extension is successfully installed.

Bruk

Utvidelsen kan bli konfigurert for implisitt eller eksplisitt teststil. Den implisitte stilen henger seg på installasjonen via describe() kallet, men dette er avhengig av et funksjonelt getfenv() kall. Scribunto-utvidelsen begrenser getfenv() kall, og i henhold til Extension:Scribunto/Lua reference manual#Differences from standard Lua så er dette ikke helt forutsigelig, dermed er bare den eksplisitte formen fungere.

Grunnen til avhengigheten av getfenv() er at funksjonene er konstruert før describe() er kalt, og dermed er det kallende kjøremiljøet allerede bundet uten de globale funksjonene. For å injisere de globale funksjonene i det riktige kjøremiljøet bruker describe() kallet getfenv(). Uten getfenv() kallet må det korrekte kjøremiljøet være tilgjengelig når funksjonene skapes. Dermed må et kall describe() installere de globale funksjonene.

Bytting mellom stiler blir gjort med konfigurasjonen { "Setup": "implicit" } eller { "Setup": "explicit" }.

Hvis du har en modul slik som «Module:HelloWorld», det allestedsnærværende og ganske irriterende eksemplet, så vil det være kodet som noe ala

local p = {}

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

return p

Deretter, på en testside /pickle, vil du teste dette som det etterfølgende

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

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

return mw.pickle:reports()

På den implisitte formen er linjene i starten og på slutten blitt fjernet, og returutsagnet er flyttet ned til slutten av koden.

Det kan være ekstra endringer, slik som hvor kallet tap() er tilgjengelig, og hvor mange describe() som kan bli gjort.