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.

4 komentarze:

  1. co do fixture, to ja często używałem też:
    http://doc.scalatest.org/1.9.1/index.html#org.scalatest.fixture.FunSpec

    OdpowiedzUsuń
    Odpowiedzi
    1. Dzięki Maciek za podpowiedź! Wdrażam się pomalutku w ScalaTest i tego typu sugestie są niezwykle cenne.

      Usuń
  2. A nie wolałbyś pisać o cechach zamiast "traitach"?

    OdpowiedzUsuń