18 czerwca 2013

taskassin na GitHubie dzień 3-5 = trait do zestawienia środowiska testu oraz ignore

Kontynuuję moje boje przy realizacji pomysłu napisania aplikacji w Scali - taskassin - w jeden miesiąc i mimo braku spektakularnych postępów, w pewnym sensie jestem zadowolony - zaczynam dostrzegać zalety pisania testów zanim powstanie kod produkcyjny aplikacji.

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.