Lektura scaladoc dla org.scalatest.FunSpec zwróciła moją uwagę na Instantiating fixture traits jako mechanizm tworzenia środowiska wykonania testu. W ten sposób zarzuciłem cechę org.scalatest.BeforeAndAfter.
trait Fixture { val now = DateTime.now val t1 = new Task("t1", now, 10) val t2 = new Task("t2", now + 2.hours) val t3 = new Task("t3", now - 2.hours) def compByDueDate(t1: Task, t2: Task) = t1.due < t2.due val ts = List(t1, t2, t3) sortWith compByDueDate } describe("List of three tasks (with 2 hours in between)") { it("should pop tasks by due order") { new Fixture { assert(ts.head === t3) } } }Już widziałem taką konstrukcję w trakcie kursu Functional Programming Principles in Scala, ale nie bardzo rozumiałem tej konstrukcji. Tym razem trafiłem na nią z innej strony - jakby od dołu, gdzie trafiłem na problem, którego rozwiązaniem było właśnie zastosowanie tej konstrukcji z utworzeniem instancji cechy. To lubię!
Poza tym przez moment mogłem nacieszyć się z dobrodziejstw metody ignore dla nowej funkcjonalności, którą niestety nie wiedziałem, jak oprogramować. Piszę test, aby się dowiedzieć - liczę, że implementacja wyjdzie w praniu, kiedy będę realizował stronę użytkownika (czym jest właśnie test). Tylko dlaczego nie mogę znaleźć scaladoc dla ignore?! Może ktoś mógłby mi pomóc, proszę?
Zmiany są dostępne w projekcie taskassin na GitHubie.
co do fixture, to ja często używałem też:
OdpowiedzUsuńhttp://doc.scalatest.org/1.9.1/index.html#org.scalatest.fixture.FunSpec
Dzięki Maciek za podpowiedź! Wdrażam się pomalutku w ScalaTest i tego typu sugestie są niezwykle cenne.
UsuńA nie wolałbyś pisać o cechach zamiast "traitach"?
OdpowiedzUsuńA dlaczego nie?! Wchodzę w to!
Usuń