Take this minimal Point
class:
class Point {
num x;
num y;
Point(this.x, this.y);
num distanceTo(Point other) {
...
}
}
As you write tests for Point
, you will probably want to set up one or more point
objects that you can access in each
test. Something like:
void main() {
group("Point", (){
setUp((){
Point p1 = new Point(3, 4);
Point p2 = new Point(3, 5);
});
test("distanceTo()", (){
expect(p1.distanceTo(p2), equals(...));
});
});
}
Do this and the Editor starts complaining that it cannot make sense of p1
or p2
. Why? Remember, setUp()
simply calls the function passed
to it before each test()
and our code defining p1
and p2
will therefore run every time. But (and this seems like a Captain Obvious mement) because p1
and p2
are local to function called by setUp()
, they cannot be accessed from outside that function. But it takes only very small changes to take care of the access problem:
void main() {
group("Point", (){
Point p1;
Point p2;
setUp((){
p1 = new Point(3, 4);
p2 = new Point(3, 5);
});
test("distanceTo()", (){
expect(p1.distanceTo(p2), equals(34));
});
});
});
Now, the function called by setUp()
assigns a value to the already existing p1
and p2
.