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.
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ń