SWT - Fakes Flashcards

1
Q

Hvad er en “fake”?

A

En falsk version af en af klassens afhængigheder

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Hvorfor bruger vi fakes?

A

For at isolere UUT fra resten af systemet, for at vi kan teste vores unit isoleret og have kontrol over klassens afhængigheder.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Hvordan muliggør vi at bruge fakes i vores tests?

A

Hvis designet ikke allerede er til det, bruger vi Triple-I (identify, interface, inject) til at isolere klassen fra dens afhængigheder, så vi kan styre testen.

Vi laver altså en loose coupling på designet.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Hvilke to store grupper af unit tests findes der?

A
  1. Value based eller state based tests, hvor man ser på om en unit returnerer den forventede værdi eller er i den forventede (eksterne*) tilstand, når vi har acted på den.
  2. Behaviour based eller interaction based tests, hvor man ser på om en unit har den forventede opførsel overfor sine dependencies, når vi har beder dem om at gøre noget.

*eksterne: som det er meningen, vi kan observe på “udefra”

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Hvilken type af fakes har vi brug for i en value/state-based unit test?

A

Vi har brug for stubs, så vi selv kan kontrollere hvad vores fake dependency sender retur til UUT (se “fakes-stubs_example01.PNG”)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Hvad bruges stubs til i en value/state-based unit tests?

A

Stubs fungerer som vores UUT’s fake dependencies og/eller give UUT en kontrolleret værdi som den har brug for til at fungere (f.eks. bare være til stede eller returnere en værdi til UUT)

  • (se “fakes-stubs_example01.PNG”)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Hvad er proceduren for value/state based unit tests?

A

Den sædvanlige:

  1. ARRANGE: opsæt UUT og dens fake dependencies
  2. ACT: stimuler UUT
  3. ASSERT: se om UUT er i den forventede tilstand eller returnerer den forventede værdi
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Hvad asserter vi på, når vi laver en value/state-based unit tests, hvor vi anvender fakes?

A

Vi asserter på at UUT er i den forventede tilstand eller returnerer den forventede værdi.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Hvilken type af fakes har vi brug for i en interaction/behaviour-based unit test?

A
  • Mocks, da vi gerne vil “optage” den opførsel der skete, for at teste om UUT’s opførsel overfor dens dependencies stemmer overens med hvad vi forventede.
  • Muligvis stubs til at give UUT enhver anden dependency, den har brug for for at fungere (f.eks. en værdi eller bare at være til stede).
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Hvad bruges mocks til i en interaction/behaviour-based unit tests?

A

Mocks bruges til at “optage” den interaktion/opførsel som der sker med UUT, fordi vi gerne vil teste om UUT har den forventede opførsel med sine dependencies.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Hvad bruges stubs til i en interaction/behaviour-based unit tests?

A

Stubs bruges til at give UUT enhver anden dependency, den har brug for for at fungere (f.eks. en værdi eller bare at være til stede)

  • Stubs er ikke altid nødvendigt i en behaviour-based unit test
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Hvad er proceduren for interaction/behaviour based unit tests?

A

Den sædvanlige:

  1. ARRANGE: opsæt UUT og dens fake dependencies
  2. ACT: stimuler UUT
  3. ASSERT: se om vores mock modtog den forventede interaktion/opførsel med UUT
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Hvad asserter vi på, når vi laver interaction/behaviour-based unit tests?

A

Vi asserter på at vores mocks modtog (“optog”) den forventede interaction med UUT.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Kan vores fake være skyld i at testen fejler i en value/state-based unit test?

A

Nej, vores fake kan aldrig være skyld i fejlen, da vi asserter på UUT og aldrig på vores stub.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Kan vores fake være skyld i at testen fejler i en interaction/behaviour-based unit test?

A

Ja, det er muligt at vores fake er skyld i fejlen, da det vi asserter på vores mock.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Hvorfor vil vi gerne have en helt frisk UUT og fakes fra starten af i hver eneste unit test?

A

Fordi ellers bliver vores unit tests afhængige af hinanden, og det kan påvirke test-resultatet

17
Q

Hvad gør NSubstitute for os her?

A

Laver fake klasser, der implementer hhv. IHeater og ITempSensor interfacene.

Så behøver vi ikke selv at skrive manuelle fake klasser.

18
Q

Hvad skal NSubstitute fakes altid laves ud fra?

A

Interfaces.

19
Q

Hvad gør vi her og hvilken type unit test er det?

A

En interaktion/behaviour based test.

Vi asserter på at vores mock _heater modtog præcist ét kald til TurnOn(). Redieved() er her en implicit “asserter”