dingus on tavallaan kuin pilkata objekti. Tärkein ero on, että et ole perustanut odotuksia etuajassa. Sinä vain ajaa koodia käyttäen dingus sijasta toisen objektin tai luokka, ja se tallentaa mitä sille tapahtuu. Sitten, kun koodi on käytetty, voit tehdä väitteitä siitä, mitä se teki dingus.
Uusi dingus luodaan Dingus luokassa. Voit antaa dinguses nimiä, joka auttaa vianetsintää testejä, varsinkin kun on useita dinguses pelissä.
& Nbsp; >>> päässä dingus tuoda Dingus
& Nbsp; >>> d = Dingus ("root")
& Nbsp; >>> d
& Nbsp;
Mille tahansa ominaisuus dingus palaa uuden dingus.
& Nbsp; >>> d.something
& Nbsp;
On olemassa muutamia poikkeuksia erityisiin dingus menetelmiä. Näemme jotkut vähän.
Dingus voidaan myös kutsua, kuten funktio tai menetelmä. Se ei välitä kuinka monta argumenttia annat sitä tai mitä nämä väitteet ovat. Puhelut dingus palaa aina sama tarkoitus, riippumatta argumentteja.
& Nbsp; >>> d ()
& Nbsp;
& Nbsp; >>> d (väite)
& Nbsp;
& Nbsp; >>> d (55)
& Nbsp;
TALLENNUS vakuutukset
Milloin tahansa voimme saada luettelon puhelut, jotka on tehty dingus. Jokainen merkintä puhelun luettelo sisältää:
& Nbsp; * nimi menetelmää, jota kutsutaan (tai "()", jos dingus itse kutsuttiin)
& Nbsp; * argumentteja, tai () jos yksikään
& Nbsp; * avainsanan argumnets, tai {} jos mikään
& Nbsp; * arvo, joka palautettiin soittajan
Tässä on luettelo puhelujen olemme tehneet d toistaiseksi:
& Nbsp; >>> päässä pprint tuonti pprint
& Nbsp; >>> pprint (d.calls)
& Nbsp; [('()', (), {},
& Nbsp; ("()", ("argumentti",), {},
& Nbsp; ("()", (55,), {},
Voit suodattaa puheluita nimen, argumentteja, ja avainsana perustelut:
& Nbsp; >>> pprint (d.calls ('()', 55))
& Nbsp; [(() ", (55,), {},
Jos et välitä erityisesti argumentin arvo, voit käyttää arvoa DontCare suodatuksen:
& Nbsp; >>> päässä dingus tuoda DontCare
& Nbsp; >>> pprint (d.calls ('()', DontCare))
& Nbsp; [('()', ('argumentti',), {},
& Nbsp; ("()", (55,), {},
Dinguses voi tehdä enemmän kuin vain attribuutteja käsiksi ja kutsua. Ne tukevat monet Python operaattorit. Tavoitteena on mahdollistaa, ja tallentaa kaikki vuorovaikutus:
& Nbsp; >>> d = Dingus ("root")
& Nbsp; >>> (2 ** d.something) ['hei'] () / 100 * 'foo'
& Nbsp;
(Toivottavasti reaalimaailman dingus tallenteita ei näyttää tältä!)
paikkaaminen
Dingus tarjoaa yhteydessä johtaja paikata esineiden kokeiden aikana. Esimerkiksi:
& Nbsp; >>> päässä dingus tuonti patch
& Nbsp; >>> tuonti urllib2
& Nbsp; >>> kanssa patch (urllib2.urlopen '):
& Nbsp; ... print urllib2.urlopen .__ class__
& Nbsp;
& Nbsp; >>> print urllib2.urlopen .__ class__
& Nbsp;
Voit myös käyttää tätä sisustusarkkitehti teidän menetelmiä:
& Nbsp; >>>patch (urllib2.urlopen ')
& Nbsp; ... def test_something (itse):
& Nbsp; ... pass
& Nbsp; ...
VAARALLINEN MAGIC
Dingus voi myös automaattisesti korvata moduulin global juostessa testeissä. Näin voit kirjoittaa täysin eristetty Osatestit. Katso esimerkkejä / urllib2 / test_urllib2.py varten esimerkiksi. Kirjoittaja ei enää suosittelee tätä ominaisuutta, koska se voi rohkaista hyvin hauras testejä. Sinun pitäisi tuntea tuskaa käsin pilkkasivat riippuvuuksia; kipu kertoo, kun luokka tekee yhteistyötä liian monet muut.
Vaatimukset :
- Python
Kommentteja ei löytynyt