You are on page 1of 42

The Art of Unit Testing, Third Edition:

with examples in JavaScript Roy


Osherove
Visit to download the full and correct content document:
https://textbookfull.com/product/the-art-of-unit-testing-third-edition-with-examples-in-ja
vascript-roy-osherove/
More products digital (pdf, epub, mobi) instant
download maybe you interests ...

Automated Unit Testing with ABAP: A Practical Approach


1st Edition James E. Mcdonough

https://textbookfull.com/product/automated-unit-testing-with-
abap-a-practical-approach-1st-edition-james-e-mcdonough/

Beginning Ethereum Smart Contracts Programming: With


Examples in Python, Solidity, and JavaScript Lee

https://textbookfull.com/product/beginning-ethereum-smart-
contracts-programming-with-examples-in-python-solidity-and-
javascript-lee/

Biota Grow 2C gather 2C cook Loucas

https://textbookfull.com/product/biota-grow-2c-gather-2c-cook-
loucas/

Pro iOS Testing: XCTest Framework for UI and Unit


Testing Avi Tsadok

https://textbookfull.com/product/pro-ios-testing-xctest-
framework-for-ui-and-unit-testing-avi-tsadok/
Pro iOS Testing: XCTest Framework for UI and Unit
Testing 1st Edition Avi Tsadok

https://textbookfull.com/product/pro-ios-testing-xctest-
framework-for-ui-and-unit-testing-1st-edition-avi-tsadok/

Unit Testing Principles, Practices, and Patterns 1st


Edition Vladimir Khorikov

https://textbookfull.com/product/unit-testing-principles-
practices-and-patterns-1st-edition-vladimir-khorikov/

Software Development, Design and Coding: With Patterns,


Debugging, Unit Testing, and Refactoring, 2nd Edition
John F. Dooley

https://textbookfull.com/product/software-development-design-and-
coding-with-patterns-debugging-unit-testing-and-refactoring-2nd-
edition-john-f-dooley/

Testing JavaScript Applications MEAP V05 Lucas Da Costa

https://textbookfull.com/product/testing-javascript-applications-
meap-v05-lucas-da-costa/

Learn With Angular 4 Collected Essays Angular CLI Unit


Testing Debugging TypeScript and Angular Build
Processes 2nd Edition Jeffry Houser

https://textbookfull.com/product/learn-with-angular-4-collected-
essays-angular-cli-unit-testing-debugging-typescript-and-angular-
build-processes-2nd-edition-jeffry-houser/
inside front cover
Test recipes
A test recipe is a test plan, outlining at which level a particular feature
should be tested.
Praise for the second edition
This book is something special. The chapters build on each other
to a startling accumulation of depth. Get ready for a treat.

—From the foreword of the second edition by Robert


C. Martin, cleancoder.com

The best way to learn unit testing from what is now a classic in the
field.

—Raphael Faria, LG Electronics

Teaches you the philosophy as well as the nuts and bolts for
effective unit testing.

—Pradeep Chellappan, Microsoft

When my team members ask me how to write unit tests the right
way, I simply answer: Get this book!

—Alessandro Campeis, Vimar SpA

The single best resource on unit testing.

—Kaleb Pederson, Next IT Corporation

The most useful and up-to-date guide to unit testing I have ever
read.

—Francesco Goggi, FIAT

A must for any serious .NET developer wishing to learn or perfect


their unit testing knowledge.

—Karl Metivier, Desjardins Security Financial


The Art of Unit Testing
Third Edition
with examples in JavaScript

Roy Osherove with Vladimir Khorikov

To comment go to liveBook

Manning

Shelter Island
For more information on this and other Manning titles go to
www.manning.com
Copyright

For online information and ordering of these and other


Manning books, please visit www.manning.com. The
publisher offers discounts on these books when ordered in
quantity.

For more information, please contact

Special Sales Department


Manning Publications Co.
20 Baldwin Road
PO Box 761
Shelter Island, NY 11964
Email: orders@manning.com

©2024 by Manning Publications Co. All rights


reserved.

No part of this publication may be reproduced, stored in a


retrieval system, or transmitted, in any form or by means
electronic, mechanical, photocopying, or otherwise, without
prior written permission of the publisher.

Many of the designations used by manufacturers and sellers


to distinguish their products are claimed as trademarks.
Where those designations appear in the book, and Manning
Publications was aware of a trademark claim, the
designations have been printed in initial caps or all caps.

♾ Recognizing the importance of preserving what has been


written, it is Manning’s policy to have the books we publish
printed on acid-free paper, and we exert our best efforts to
that end. Recognizing also our responsibility to conserve the
resources of our planet, Manning books are printed on
paper that is at least 15 percent recycled and processed
without the use of elemental chlorine.

Manning Publications Co.


20 Baldwin Road Technical
PO Box 761
Shelter Island, NY 11964

Development editor: Connor O’Brien


Technical development editor: Mike Shepard
Review editors: Adriana Sabo and Dunja Nikitović
Production editor: Kathy Rossland
Copy editor: Andy Carroll
Proofreader: Katie Tennant
Technical proofreader: Jean-François Morin
Typesetter: Dennis Dalinnik
Cover designer: Marija Tudor
ISBN: 9781617297489
dedication
To Tal, Itamar, Aviv, and Ido. My family.

—Roy Osherove

To my wife Nina and son Timothy.

—Vladimir Khorikov
contents
Front matter
foreword to the second edition
foreword to the first edition
preface
acknowledgments
about this book
about the authors
about the cover illustration

Part 1 Getting started

1 The basics of unit testing


1.1 The first step
1.2 Defining unit testing, step by step
1.3 Entry points and exit points
1.4 Exit point types
1.5 Different exit points, different techniques
1.6 A test from scratch
1.7 Characteristics of a good unit test
What is a good unit test?
A unit test checklist

1.8 Integration tests


1.9 Finalizing our definition
1.10 Test-driven development
TDD: Not a substitute for good unit tests
Three core skills needed for successful TDD
2 A first unit test
2.1 Introducing Jest
Preparing our environment
Preparing our working folder
Installing Jest
Creating a test file
Executing Jest

2.2 The library, the assert, the runner, and the reporter
2.3 What unit testing frameworks offer
The xUnit frameworks
xUnit, TAP, and Jest structures
2.4 Introducing the Password Verifier project
2.5 The first Jest test for verifyPassword
The Arrange-Act-Assert pattern
Testing the test
USE naming
String comparisons and maintainability
Using describe()
Structure implying context
The it() function
Two Jest flavors
Refactoring the production code
2.6 Trying the beforeEach() route
beforeEach() and scroll fatigue
2.7 Trying the factory method route
Replacing beforeEach() completely with factory methods

2.8 Going full circle to test()


2.9 Refactoring to parameterized tests
2.10 Checking for expected thrown errors
2.11 Setting test categories

Part 2 Core techniques

3 Breaking dependencies with stubs


3.1 Types of dependencies
3.2 Reasons to use stubs
3.3 Generally accepted design approaches to stubbing
Stubbing out time with parameter injection
Dependencies, injections, and control
3.4 Functional injection techniques
Injecting a function
Dependency injection via partial application
3.5 Modular injection techniques
3.6 Moving toward objects with constructor functions
3.7 Object-oriented injection techniques
Constructor injection
Injecting an object instead of a function
Extracting a common interface
4 Interaction testing using mock objects
4.1 Interaction testing, mocks, and stubs
4.2 Depending on a logger
4.3 Standard style: Introduce parameter refactoring
4.4 The importance of differentiating between mocks and
stubs
4.5 Modular-style mocks
Example of production code
Refactoring the production code in a modular injection style
A test example with modular-style injection
4.6 Mocks in a functional style
Working with a currying style
Working with higher-order functions and not currying

4.7 Mocks in an object-oriented style


Refactoring production code for injection
Refactoring production code with interface injection
4.8 Dealing with complicated interfaces
Example of a complicated interface
Writing tests with complicated interfaces
Downsides of using complicated interfaces directly
The interface segregation principle
4.9 Partial mocks
A functional example of a partial mock
An object-oriented partial mock example
5 Isolation frameworks
5.1 Defining isolation frameworks
Choosing a flavor: Loose vs. typed
5.2 Faking modules dynamically
Some things to notice about Jest’s API
Consider abstracting away direct dependencies
5.3 Functional dynamic mocks and stubs
5.4 Object-oriented dynamic mocks and stubs
Using a loosely typed framework
Switching to a type-friendly framework

5.5 Stubbing behavior dynamically


An object-oriented example with a mock and a stub
Stubs and mocks with substitute.js
5.6 Advantages and traps of isolation frameworks
You don’t need mock objects most of the time
Unreadable test code
Verifying the wrong things
Having more than one mock per test
Overspecifying the tests

6 Unit testing asynchronous code


doing it in a fully test-driven manner—writing the test, then
writing the code, seeing the test fail, making the test pass,
refactoring, and starting all over again.

The first few months of the project were great. Things were
going well, and we had tests that proved that our code
worked. But as time went by, requirements changed. We
were forced to change our code to fit those new
requirements, and when we did, tests broke and had to be
fixed. The code still worked, but the tests we wrote were so
brittle that any little change in our code broke them, even
though the code was working fine. It became a daunting
task to change code in a class or method because we also
had to fix all the related unit tests.

Worse yet, some tests became unusable because the people


who wrote them left the project, and no one knew how to
maintain the tests or what they were testing. The names we
gave our unit testing methods weren’t clear enough, and we
had tests relying on other tests. We ended up throwing out
most of the tests less than six months into the project.

The project was a miserable failure because we let the tests


we wrote do more harm than good. They took more time to
maintain and understand than they saved us in the long
run, so we stopped using them. I moved on to other
projects, where we did a better job writing our unit tests,
and we had some great successes using them, saving huge
amounts of debugging and integration time. Since that first
failed project, I’ve been compiling best practices for unit
Another random document with
no related content on Scribd:
MESAKKI. Mutta joka töllistelee liian kauvan syntiseen maahan,
unohtaa taivaan korkeat luhdit.

MAAILMAN-MATTI. Luhdin kauttako te taivaaseen kiipeette. — Ei,


mutta missä ne kottikärryt ovat, että saisin pois tämän Hölmölän
syntisen mullan.

Menee. Amalia tulee, astuu kuistille.

AKIANTERI. Ah, siinä hän on! Mesakki, joko, minä korotan


ääneni?

MESAKKI. Älä sumeile, parempi naida kuin palaa!

AKIANTERI. Onkohan kukonkoipi lakkarissani? Kaikki käy hyvin.


Käy päälle Akianteri, sinun varjosi ei koskaan pienene. (Kopeloi
taskujaan.)

AMALIA. Mitähän se kopeloi taskujaan?

MESAKKI. Älä inttaile! Ole rohkea kuin päämies Mikaeli! (Työntää


Akianteria Amaliaa kohden.)

AMALIA. Hä!

AKIANTERI (Ojentaa oikeata kättä ilmaan). Niin, kuule nyt minun


ääneni, sinä Hölmölän ruusu, sinä tulipunainen kukka!

AMALIA. Onko henki taas tullut päälle.

AKIANTERI. Sinä hymistyksen helistys ja helistyksen hymistys,


sinä punareunaisten aivoituksieni tärisevä, värisevä, hyllyvä,
lyllyvä…!
AMALIA. Lyll, lyll! Onko sinun vilu!

AKIANTERI. Sinä olet suloinen kuin hölmöläinen mallassauna,


makia sinä olet kuin nauris ja päihdyttävä kuin katajaviina, ylön ihana
sinä olet, sinä manteli, väskynä, namuni!

MESAKKI. Kuulkaas kuinka runollisen taivaallisesti ja taivaallisen


runollisesti Akianteri ilmoittaa rakkautensa korkian veisun!

AMALIA. Onks se tullut hulluksi!

AKIANTERI. Kokonas olet ihana kuin päivä, minä olen lemmen


leino rakastava räivä!

AMALIA. Hahaa, sinä väristyksen päristys!

AKIANTERI. Haa, neitokainen, kovasti koittelet sinä minun


tärisyttäviä ja värisyttäviä tulivuorikuohutuksiani mutta minä pysyn
lujana.

MESAKKI. Valmista itsesi, sinä, joka olet kaunistettu kaikkien


Hölmölän tyttärien seassa.

AKIANTERI (Lyö rintoihinsa). Kuolemaan saakka pysyn lujana.

AMALIA. Mesakki, viekää hänet jo lättiin, sillä muuten hän rupeaa


raivoilemaan. Mutta nyt minä tiedän, mikä miestä riivaa, se on se
kukon koipi lakkarissa. Näytäs minulle se!

AKIANTERI. Kukon koipi? Ei minulla ole mitään kukonkoipea.

AMALIA. Niin, sinä Hölmölän kiekuva, tulipunainen kukko!


(Sieppaa Akianterin taskusta kukon koiven, nauraa ihan
katketakseen ja juoksee tiehensä.)
AKIANTERI. Minun kukonkoipeni, minun kukonkoipeni! Hän vei
minulta minun naimaonneni.

MESAKKI. Akianteri, älä muljota noin kamalasti! Tyynny ja ota


vaari minun sanoistani. Sinun munaskuusi ovat riemuiset, koska
sinun huulesi puhuvat, mutta sinä kilvoittelet liian kiivaasti. Sinä
pelästytit neitokaisen sinun väkevyydelläsi.

AKIANTERI. Pilkkasiko nainen minua vai koitteliko hän minun


väkevyyttäni.

MESAKKI. Totisesti, hän koitteli sinua mutta aika ei ollut otollinen.

AKIANTERI. Vai ei otollinen, otollinen! Tuhannen sarvipäätä!


Mesakki, minun muotoni muuttuu ja hahmoni hajoo. Nyt minä tahdon
tapella ja minä paiskaan kumoon koko Hölmölän kylän!

MESAKKI. Älä veikkonen, älä veikkonen!

AKIANTERI. Oletkos kuullut tätä laulua: Ja tässä on laulu kuin


hirrenpää, johon pappani ennen luotti, sanat siinä on että hirvittää ja
markkinavirren nuotti. Arvaas kuka sen teki!

MESAKKI. En nyt arvaa, en nyt arvaa.

AKIANTERI. Vai et arvaa, etkös ymmärrä ylhäisen yskää. Voi


mammani ja voi pappani, kissa, kissa, kissa vie, nyt tästä tulee
tupenrapina!

MESAKKI. Älä, älä, minä olen vanha, vaivainen mies.

AKIANTERI. Etkös sinä, vanha unilukkari, tiedä, että minä, minä


olen sen tehnyt.
MESAKKI. Sinä niin, sinä niin, kukas muu, herrajesta!

AKIANTERI (Toistaa moneen kertaan: kuin hirrenpää… että


hirvittää). Ja entäs tämä: herrasväki tuli saaresta, sun ralilali lei, ei
ollut ystävää, sun ralilali lei! Laula mukana muuten minä teen sinusta
makkaraa!

Akianteri ja Mesakki laulavat: herrasväki tuli saaresta j.n.e.

AKIANTERI. Ja sitte se minun uusi arkkilauluni postimurhaajasta.


Siinä on kaksisataa värssyä!

MESAKKI. Kaksisataa värssyä! Miksi tämä minulle? Voi, voi, näin


en minä laulanut kirkossakaan.

AKIANTERI. Kirkossa! Oh, nyt minä muistan, mitä minä olen


tehnyt pyhälle sananpalvelijalle!

MESAKKI. Hän ei tiedä mitä hän tekee, minä helistän huutavan


äänellä, ehkä se auttaa. — (Helistää kepillään ja kopsauttaa
Akianteria päähän.) Heräjä, heräjä!

AKIANTERI. Totisesti, Mesakki, minä kuulen sinun äänesi, missä


minä olen, mitä minä olen tehnyt? Kopauta minua vielä kerta kalloon,
minä olen sen ansainnut!

Mesakki koskettaa kepillään Akianteria kalloon.

MESAKKI. Etkös ole ihmisparka aivan arka.

AKIANTERI. Synkeydessä syvään nukkunut olin, mutta sinä,


Mesakki, herätit minun!

MESAKKI. Nyt koko maailma iloita mahtaa!


AKIANTERI (Itku kurkussa, syleilee Mesakkia). Anna anteeksi,
Mesakki, minä koperoitsen niinkuin sokea koperoitsee.

MESAKKI. Me lyödään usein sokeudelta ja sydämmen


tyhmyydeltä. Akianteri, äl unohda siis helvetin tuskaa, siell liekki
lakkaamatta puuskaa, siis varis, vapis ain kaikk karvas nosta!

AKIANTERI (Laulaa möristen). Enkä minä luovu mun kullastani


vaikka vereni keitettäisiin, vaikka minut äkiltä laivan takilta mereen
heitettäisiin.

MESAKKI. Oikein, Akianteri, laulu lieventäköön sinun surusi.


Katsos, Amalia ei tahtonut ilmaista kaikkea meidän kuulten, mutta
otappas tyttö kahden kesken hiljaa hissuksiin, niin hän on nöyrä ja
lauhkia kuin lammas.

AKIANTERI. Mesakki, sinä olet kokemuksesta viisas mies. —


Ettäkö koputtaisin hänen luttinsa ovelle? Oi, terve, te suloiset
Hölmölän vanhat, harmaat lutit!

MESAKKI. Akianteri, Akianteri, kirkonmiehenä minä varoitan sinua


sinun lihallisista mielikuvistasi, me olemme itse kohdastamme
kaikkeen pahaan vikapäät, muistakaamme se, Akianteri, kaikissa
meidän vaivoissamme ja kiusauksissamme.

AKIANTERI. Minä tahdon pitää sinun säätysi ja käskysi, Mesakki.


Ja Mesakki, onhan minulla minun suuri vuntierinkini, minun
ikipyöräni, se ajaa ulos pahat vaivat ja kiusaukset. — Mesakki,
kuules, minä vien ikipyörän Epran nähtäväksi, totisesti, minä teen
sen heti paikalla.
MESAKKI. Poikani, poikani, tee niin ja pyydä Koputus-Liisalta
jotain rauhoittavaa, pelästyneen tippoja tai surun lievitysvettä!

AKIANTERI (Ilostuen ja taputtaen Mesakkia). Mesakki, sinä olet


minun hyvä edelläveisaajani. Minä menen, niinkuin iloinen ylkä
tahdon astua vihkitupaan. — Ah, Hölmölän ruusu!

MESAKKI. Niin, mene rauhassa, poikani, kaikki käy jetsulleen.

Akianteri menee.

MAAILMAN-MATTI (Tulee, heittää kärryt huolimattomasti syrjään


ja pyyhkii hikeä otsaltaan). Ei tämä vetele! Hiiteen minä heitän
Hölmölän hullutukset.

JASKA (Tulee vihtoineen saunapuvussa kädet selän takana,


kulkee kuin isäntä töitä katsellen). Tiedätkös, Mesakki, nyt minä en
enään pane tikkua ristiin, mitäs se hyödyttää, eläähän tässä
muutenkin ja kohta se aarrekin saadaan, silloin en minä tee muuta
kuin makaan kukonhöyhenpolstarilla, syljen kattoon ja polttelen
oikein priima pruumaa.

MESAKKI. Niin, ihmeellisesti on onni meitä kaikkia potkaissut,


mutta muista se, Jaska, älä anna itseäs rikkauden tähden vihaan
niinkuin turkki, juudi tai peaani. Tänkaltainen elämä on sinulle
vahingollinen.

JASKA. Kuka taitaa käydä oikeudelle minun kanssani. Katsos,


näin minä kävelen kädet selän takana, isännän silmä hevosen
lihottaa, sanotaan, ei minun nyt tartte muuta kuin katsella kun muut
tekevät työtä.

MESAKKI. Jaa, jaa, Jaska, Jaska, minä varoitan.


EPRA (Tulee samoin kuin Jaska vihta kädessä ja saunapuvussa,
kädet selän takana). Jaska.

JASKA. Epra!

MESAKKI. Kohta on saunan aika. Kas kun eivät meidän miehet jo


tule sieltä porsaiden jalostuskokouksesta.

JASKA. Veljeni Epra, mitäs sanot nyt tästä!

EPRA. Ha. Näetkös, minä rumineeraan.

JASKA. Niin, näetkös, minäkin rumineeraan. (Kävelevät


edestakaisin.)

EPRA. Työmekkoni heitin minä, en minä tästä puoleen tee muuta


kuin makaan vaan ja otan saunassa löylyjä.

JASKA. Niin minäkin, ja pyhänä sitä ajetaan kirkolle oikein


evankeliumivaljailla, hui että humahtaa, pois tieltä, kun Hölmölän
rikkaat rusthollarit ajavat siknaalit hampaissa!

EPRA. Ha! Herrat ajaa ja savu jää, niin.

JASKA. Mitäs me suremme velattoman talon pojat, laitetaan


vinkkelipytinki ja…

EPRA. Ja pannaan rillisilmät koirat portille haukkumaan.

JASKA. Ja Justiinalle minä teetän oikein kahisevan


samettihameen, eikä sen enään tartte makkaroita laittaa.

EPRA. Ja minä Amalialle oikein silkkikengät ja hatun, jossa


semmoset plyymit lentelee. Koputus-Liisalle minä jo lupasin taalarin
kirkkohuivia varten.

JASKA. Ja minä ostan oikein hopeiset kolmihaaraiset


joulukynttiläjalat.

EPRA. Ja minä kultaisen puurokupin.

JASKA. Kyllä meidän nyt kelpaa kun olemme rikkaita.

EPRA. Ha, rikkaita! Kyllä kelpaa.

JASKA. Me rumineeraamme.

EPRA. Ha, me rumineeraamme.

Kävelevät pönäkästi edestakaisin.

MESAKKI (Kurkistaa Epran akkunasta). Hihii!

MAAILMAN-MATTI. Mitäs se Mesakki nyt hihittää!

MESAKKI. Hihii, Koputus-Liisa! Kas, Akianteri makaa penkillä!

MAAILMAN-MATTI. Älkää kurkistako lähimmäisenne huvitarhaan.


Se
Koputus-Liisa taitaa olla Mesakin entinen remma!

MESAKKI. Mitäs minä maailman menon turhuudesta. Mutta


katsokaas, Liisa taputtaa kuin taikinaa, ja Akianteri ähkii ja puhkii
kuin synnin vaivoissa.

MAAILMAN-MATTI (Loikkaa kuopan reunalle; itsekseen). Vanha


kettu! (Epra ja Jaska seisahtuvat kuopan reunalle.)
JASKA (Pönäkästi). Mutta eikös jo työ ala sujua.

EPRA (Koppavasti). Niin, saisi se käydä hiukan joutusampaan.

MAAILMAN-MATTI. Tarkkaa teen niinkuin ruotiukko koiraa


nylkiessään.
(Epralle.) — Mutta kuinka Akianteri nyt jaksaa?

EPRA. Siellä se makaa tuvan penkillä, ja Koputus-Liisa hoitelee


sitä.

MESAKKI. Se otti sen niin pahakseen, kun Amalia vei siltä


kukonkoiven.

EPRA. Ha, kukonkoiven! No, kyllä Amalia vielä malttaa mielensä.

MESAKKI. Niin, luonto se on joka tikanpojan puuhun vetää.

JASKA. Sen minä sanon, että minä alan jo kärsimystyä, eikös


siellä, jukravita, jo näy mitään!

EPRA. Jaa, kyllä olisi jo aika nostaa se raha-arkku.

MESAKKI. Hys, hys, hyvät isännät, muistakaa toki, ettei hän ole
mikään tavallinen renki.

EPRA. Niin, armollinen riikin herra.

JASKA. Suurarmollinen herra riikinjakaja.

MAAILMAN-MATTI (Itsekseen). En minä enään viitsi. (Tekeytyy


kipeäksi ja huutaa äkkiä.) Ai, ai, ai!

JASKA. Mikä nyt tuli!


EPRA. Ha, mitä!

MAAILMAN-MATTI. Ai, ai, auttakaa, auttakaa!

MESAKKI. Voi, taivaan talivasara!

Jaska ja Epra koittavat auttaa Maailman-Mattia.

MAAILMAN-MATTI. Ai, ai, älkää koskeko, älkää koskeko! Jalka


poikki, jalka poikki!

JASKA ja EPRA. Jalka poikki!

MESAKKI. Elämä on juur vähä tomun tuoksu ja hekuma kuin


liukas virran juoksu!

MAAILMAN-MATTI. Aurinko pisti, ja jalka nyrjähti, ai, ai, ai, koskee


niin, koskee niin.

JASKA. Mitäs me nyt teemme, voi surkeus, nyt menivät kaikki


kalleudet, kultasapelit kuin pohjattomaan kaivoon.

EPRA. Ha, ja rahakirstut. Mitäs me nyt teemme!

MESAKKI. Tämä oli meille meidän pahain tekojemme jälkeen.

JASKA. Vest ja varjele, tätä onnettomuutta, tätä onnettomuutta!

EPRA. Voi, suutari sentään!

MAAILMAN-MATTI, Minä kuolen, minä kuolen!

MESAKKI. Vettä, vettä! Miksei Hölmölässä ole kaivoa!

MAAILMAN-MATTI. Tai vaarinkaljaa! Ai, ai!


JASKA. Minä juoksen kuin päätön kana, missä on minun toinen
töppöseni!

MESAKKI. Käskekää tänne Koputus-Liisa!

EPRA. Jaa Koputus-Liisa?

MESAKKI. Niin, Koputus-Liisa.

JASKA. Älä siinä seiso kuin kysymysmerkki.

EPRA. Jaa kysymysmerkki!

JASKA. Niin, ja pataässä.

MESAKKI. Epra, mene hakemaan Koputus-Liisaa.

EPRA. Minä menen! (Menee.)

MESAKKI. Virressä veisataan: Kuin ennen paljon hyppel, on nyt


juur jalvotoin. — Voi, taivas, voi, taivas!

JASKA. Koittakaa, voitteko hyppiä, ehkä jalka taas niksahtaa


sijoilleen.

MAAILMAN-MATTI. Ei, ei, ai, ai!

JASKA. Aina kun minä olen hiukan pahalla päällä, kun Justiina on
minua torunut, alan minä hyppiä kaiken maailman polskaa.
Koittakaas, ehkä se auttaa!

MAAILMAN-MATTI. Ei se auta. Vaarinkaljaa! (Jaska tuo kaljaa.)


Oh, nyt se meni hiukan ohi!
MESAKKI. Taivaalle kiitos! Rakkaat hölmöläiset, antakaamme
itseämme tästä ojettaa. Minäkin otan pienen kulauksen,
pikkuruikkusen vain, sillä juopumus viisaan villitsee.

MAAILMAN-MATTI. Ai, ai, se tuli taas, minä en pysy pystyssä,


silmät pyörivät ja taivas tanssii. (Pyörittelee silmiään.)

JASKA. Ui, ui, näin meni nyt koko prameus.

MAAILMAN-MATTI. Kyllä se löytyy. Jaska ja Epra, minä uskon


työni vain teille, kaivakaa, kaivakaa yhdessä, kyllä se löytyy.

JASKA. Mikäs tässä muukaan auttaa.

Koputus-Liisa tulee, kulkee kädet rinnalla hitaasti Maailman-Mattia


kohden tarkastellen hyvin tärkeän ja tutkiskelevan näköisenä.
Jälessä tulee Epra nolona.

KOPUTUS-LIISA. Sanoinhan, että kyllä minua täällä vielä


tarvitaan.

EPRA. Mitä Liisa määrää, se täytyy myös tehdä!

JASKA. Niin,- se täytyy tehdä, tässä kun minulla kerran oli mato,
niin… … KOPUTUS-LIISA. Jahka katson, onko se kuolemaksi.

JASKA. Jos Koputus-Liisa sanoo, että se on kuolemaksi, niin se


on kuolemaksi.

MESAKKI. Niin, kerran täytyy täältä eritä. Hohoo, jaa!

JASKA. Hohoo, jaa, kaikki me itsemme häijysti käytämme.


EPRA. Kuin ikinänsä köyhä ja rikas, keskenämme olemme
yhdenkaltaiset tässä, hohoo, jaa!

KOPUTUS-LIISA. Jollette te ole hiljaa, niin minä annan teille


ylenantopulveria tai kamalaa.

JASKA. Ui, kamalaa, ei, ei minulla nyt ole matoa.

KOPUTUS-LIISA (Lähestyen Maailman-Mattia, koettelee joka


jäsentä).
Koskeeko tästä ja tästä ja tästä?

MAAILMAN-MATTI. Ai, ai, ei saa, ei saa!

KOPUTUS-LIISA. Entä vatsa?

MAAILMAN-MATTI. Pullottaa kuin rumpu.

EPRA. Söi meidän puuroa.

JASKA. Niin, teidän puuroanne!

EPRA. Ja teidän makkaroitanne!

KOPUTUS-LIISA (Kaivaa pussistaan rohtopulloja y.m.). Sielun


vihollisen pillastusta…

MAAILMAN-MATTI. En minä ota hevosrohtoja.

KOPUTUS-LIISA. Kyllä minä tiedän, hevosille pääntautia ja


ihmisille vatsatautia vastaan.

MAAILMAN-MATTI. Ai, ai, kolottaa, kolottaa!


KOPUTUS-LIISA. Hampaita? Pannaan hullunkaalin siemeniä.

MAAILMAN-MATTI. Ei, minä en kuule oikein.

KOPUTUS-LIISA. Kaadetaan korviin saakelinpojan korvatippoja.

JASKA. Ottakaa nyt mitä rohtyörinnä määrää.

MAAILMAN-MATTI. Minua yskittää niin kovasti.

KOPUTUS-LIISA (Koputtaa selkään). No, siihen sopii neitseen


nahkaa tai akattoman laastaria.

MAAILMAN-MATTI. Akattoman laastaria! Ei, ei!

JASKA. Leini sillä on.

MESAKKI. Niin, ja jalka taisi nyrjähtyä!

MAAILMAN-MATTI. Niin, nyt minä muistan, jalkaanihan mun


kolottaakin.

KOPUTUS-LIISA. Miksette sitä heti sanonut. Nyt minä tiedän. Me


viemme korkean riikinherran levolle, sitte minä hieron jalkaan kukon
öljyä, enkelskan veisaavan pukin talia ja yhdeksän miehen voimaa.
Jos tulee kuume, niin minä annan Hakamummon elttatippoja, ja jollei
lopuksi terva ja sauna auta, niin se on kuolemaksi, ihan varmaan se
on kuolemaksi, niin totta kuin minä olen Koputus-Liisa ja äitini tytär.
Taluttakaa potilas tupaan.

Jaska ja Epra taluttavat, Maailman-Matti on ontuvinaan.

MAAILMAN-MATTI. Mutta eikös teillä ole korpiroinaa, kolmenlaisia


tippoja tai laakivettä.
JASKA. Laakivettä, laakivettä! Kerran kun minä sitä otin, niin minä
tulin niin hiivatin iloiseksi että hih!

KOPUTUS-LIISA. Minulla on vaikka mitä!

MAAILMAN-MATTI (Ilostuen). Minäkin sanon hih!

JASKA. Hih!

EPRA. Hän paranee.

MAAILMAN-MATTI. Kun minä saan hiukan laakivettä, niin minä


olen kohta kuin toinen mies. Anteeksi, hyvät hölmöläiset, että minä
saatoin teidät pulaan, ei nyt auta muu kuin, että itse kaivatte ja heti,
niin, tehkää se heti!

JASKA. Niin, heti.

EPRA. Jaa heti?

MAAILMAN-MATTI. Niin, tehkää se heti, sillä nyt on otollinen aika,


koska allakassakin on neljä laneettaa!

MESAKKI. Niin, kaivakaa te, Jaska ja Epra, kaikessa sovussa,


minä ja Koputus-Liisa talutamme kyllä korkean vieraan tupaan.
(Taluttaa Maailman-Mattia.)

MAAILMAN-MATTI (Kompuroiden kuistiin). Niin, niin, se on


kuolemaksi, se on kuolemaksi, ai, ai, ai, kuinka koskee, ai, ai!

Menevät Epran tupaan.

JASKA. Kaivaa että multa sinkoo. Hei, nyt minä kaivan vaikka
maan napaan saakka.
EPRA (Kaivaa toista syrjää). Entäs minä, tahdon olla kuin myyrä.

JASKA. Niin, onnen myyriä nyt olemme.

EPRA. Kohta minä nostan arkun.

JASKA. Ja kultasapeli, voi, jeekuna vyrrää!

EPRA. Oh, kuinka se kivi painaa! Väännä kangella!

JASKA. Ai, ai, käteni puutuu, minä en jaksa.

EPRA. Oh, minä olen jo kuin uitettu hevonen.

JASKA. Oh, tämä on kuolemaksi.

EPRA. Ha, jaa kuolemaksi.

JASKA. Minä tunnen jo auringonpistoksia.

EPRA. Ja minun jalkani naksahtaa niin kummallisesti.

JASKA. Mutta miksi töppöseni ovat märät?

EPRA. Täällä on vettä!

JASKA. Vettä, sanot, mitäs se merkitsee?

EPRA. Tässä on kaivon paikka, voi, voi!

JASKA. Ui! Minä nousen pois tästä suden kuopasta.

EPRA. Ha, pois nousen minäkin.


Koputus-Liisa ja Maailman-Matti, jolla on valkoinen side otsalla,
takaraivolla isot solmut. Jälessä Mesakki ja Akianteri.

MAAILMAN-MATTI. Kyllä jo riittää!

KOPUTUS-LIISA. Ja nyt saunaan.

MAAILMAN-MATTI. Ihmeellistä, heti kun minä sain laakivettä


hernelaukkuuni, niin minä paranin. Koputus-Liisa on paras
maailmanparantaja.

KOPUTUS-LIISA. Sanoinhan minä, että kyllä minun koprani kivut


krassaa.

MAAILMAN-MATTI. Huomenna minä maksan kaikki!

JASKA. Arvatkaas, arvatkaas, kuopassa on vettä, tulkaas


katsomaan.

MESAKKI. Olisiko tämä synninpaisumuksen vettä?

MAAILMAN-MATTI. Siinä on kaivo… ihmeitten ihme, viisauden


kaivo!

MESAKKI. Rakkaat veljet ja kanssapalvelijat!

JASKA. Hipp ja heijaa, minä sekotan tätä vettä kaljatynnöriin!


Auta,
Akianteri!

Jaska kantaa tuvasta kaljatynnörin ja asettaa sen rahille, Akianteri


tuo haarikoita.
AKIANTERI. Nyt me voimme viettää viisaiden vaariemme
tappijuhlaa!

EPRA. Jaa että nyt tulisimme oikein viisaiksi!

JASKA. Niin viisaiksi, Epra, niin viisaiksi, ettei tästä puoleen


mikään vedä vertoja Hölmölän kansan ymmärrykselle.

MESAKKI. On kaikki toimi, taito, viisaus juur' aivan lyhykäinen


humaus.

AKIANTERI. Terve, sinä Sipillan suuri jälkeläinen, paitsi minua ei


maailmassa ole ketään viisaampaa kuin hän, joka keksi viisautemme
kaivon. Ajatelkaa, hölmöläiset, jalkojemme alla on tämä kultalähde
pulppunut, emmekä me ole siitä mitään tietäneet.

MESAKKI. Se avaa suut ja virvoittaa sydämmet ja munaskuut.


Mutta juokaamme kuitenkin varovasti.

MAAILMAN-MATTI. Kaukaa vaeltavat ihmiset tänne


ammentamaan viisautenne kaivosta, ja he tuovat teille kultaa ja
kalliita kiviä. Nylkekäät ja kiskokaat heitä, ottakaat kaisantaalari
jokaisesta nassakasta vettä, ja kolikoita kasaantuu teidän
koinsyömiin arkkuihinne. Riemuitkaat teitänne!

MESAKKI. Hölmölästä tulee vielä oikea pyhiinvaelluspaikka.

JASKA (Ammentaa vettä kuopasta ja kantaa tynnyriin). Jeekuna


vyrrää!
Epra, ajatteles, kaisantaalari nassakasta vettä!

EPRA. Taikka kaksi.


Jaska ja Epra juovat.

JASKA. Niin, vaikka kaksi. Epra, me olemme oikein onnen poikia,


tule, ystävä, vanhaa uskollista, karvaista rintaani vasten!

Jaska ja Epra syleilevät.

EPRA. Jukravita! Minun ymmärrykseni kirkastuu!

AKIANTERI. Ja minun! Nyt minä keksin ikipyörän!

MAAILMAN-MATTI. Juo. Juokaat, niin te näette! Epra ja Jaska, jo


ensi yönä te näette unessa kultasapelin ja raha-arkun paikan,
perätkää Hölmölän talojen peräseinää. Niin, minä en sano muuta.
Ennen auringon nousua selviää kaikki.

JASKA. Minä alan jo tänä iltana.

EPRA. Niin minäkin teen, mutta ensin saunaan!

JASKA. Ja minä otan sellaisen löylyn, että silakatkin seinällä


paistuu.

EPRA. Ja minä annan Koputus-Liisan iskeä kaksi sarvea


takapakuroihini.

JASKA. Ja minä kaksi sarvea niskaan.

EPRA. ja yhden päähän.

JASKA. Ihan keskelle otsaa! — Mutta ensin pudotamme vielä


kielellemme pisaran viisauden vettä. Olkoon nyt janomme suuri kuin
Nooakilla.
EPRA. Karaiskaamme kurkkuamme joka päivä, ja elämämme
olkoon paratiisi.

JASKA. Ja hiukan vielä parempi kuin paratiisi.

MESAKKI. Iloitkaan kaikki, sillä hyvä kaitselmus ohjaa haparoivia


askeleitamme.

JASKA. Nyt minä tahtoisin suudella koko maailmaa! Herra


mestari, nostakaa oikeata koipeanne ja sallikaa minun suudella
teidän armollista kenkäänne! (Suutelee kenkää.)

EPRA. Ja nostakaa myös vasenta jalkaanne, sillä minä en tahdo


olla huonompi kuin veljeni Jaska!

Maailman-Matti nostaa jalkojaan ja Epra suutelee kenkää.

TIKKA (Tikka ynnä muita hölmöläisiä saunapuvussa vastat


kainalossa). Minä olen jo kuullut siitä suuresta tapauksesta, iloitse,
sinä Hölmölän kansa! Kuulkaa!

MESAKKI. Hyst! Kuulkaat palvelijat ja olkaa kuuliaiset meille,


teidän ruumiillisille isännillenne, tuomareille, piispoille ja
sananpalvelijoillenne.

TIKKA (Maailman-Matille). Hölmölän lautakunta on tyysten ja


tarkoin punnittuaan pitänyt tänään kyläkäräjiä, ja minä edestuon
toimellisen ja korkeasti kunnioitettavan porsaidenjalostusyhdistyksen
puolesta kunnioittavimman kunnioituksen ja nimitän teidät kaikkien
kunniallisten ja toimellisten hölmöläisten porsaiden
kunniajalostusmestariksi ja merkiksi ripustan minä tämän kullatun
porsaan kaulaanne.

You might also like