Bill, Thanks for posting this. I am, by experience (I started using it, I can use it enough to write basic tests, I know no more) using Specs. I would welcome and encourage some sample tests in Lift archetypes that use ScalaTest. I want to make sure that folks who pick up Lift get to experience ScalaTest as well as Specs... that way, folks who have a better understanding of tests can make better choices.
Thanks, David On Thu, Oct 1, 2009 at 1:27 PM, Bill Venners <[email protected]> wrote: > > Hi Ryan, > > It looks like you're currently using a JUnit TestCase. If you want an > easier port to something that would work you could use a ScalaTest > Suite like this: > > import org.scalatest.Suite > > class YourSuite extends Suite { > > val session = new LiftSession("", randomString(20), Empty) > val stableTime = now > > override def withFixture(test: NoArgTest) { > > S.initIfUninitted(session) { > val user = User.create > user.firstName("XXX") > user.lastName("YYY") > user.save > User.logUserIn(user) > test() > } > } > > def testValue() { > val xml = > <xml:group> > <tr> > <td> > <p:fullName>My Name</p:fullName> > </td> > <td> > <p:style>Fighter Style</p:style> > </td> > <td> > <p:weight>Weight</p:weight> > </td> > </tr> > </xml:group> > val trainer = new Trainer() > val output = trainer.showPeople(xml) > // seems like you need an assertion here... > } > } > > A Suite considers methods that start with "test" as tests, like JUnit > 3, except they don't need to result in Unit so you don't need an extra > () at the end. The withFixture method is an alternative to > beforeEach/afterEach, which are like JUnit 3's setUp/tearDown methods. > Each test gets passed as a function to withFixture, which is > responsible for executing the test by invoking the function. In this > case, it is executed in the context created by S. initIfUninitted. > This is ScalaTest 1.0, which is available as a SNAPSHOT right now but > should be released proper a week from Monday. > > http://www.artima.com/scalatest > > Bill > > On Thu, Oct 1, 2009 at 9:50 AM, David Pollak > <[email protected]> wrote: > > Using Specs 1.6: > > > > object HelloWorldTestSpecs extends Specification { > > val session = new LiftSession("", randomString(20), Empty) > > val stableTime = now > > override def executeExpectations(ex: Examples, t: =>Any): Any = { > > S.initIfUninitted(session) { > > ... put your User init here. The User.logUserIn will be within the > > context of a session and thus session (and request) vars will be valid > > } > > } > > "HelloWorld Snippet" should { > > "Put the time in the node" in { > > ... do testing here > > } > > } > > } > > > > Hope this helps. > > On Thu, Oct 1, 2009 at 8:55 AM, rstradling <[email protected]> > wrote: > >> > >> I have a class called > >> class Trainer { > >> def showPeople(xhtml : Group) : NodeSeq = { > >> val user : User = User.currentUser.open_! > >> ... > >> } > >> } > >> > >> I then want to write a unit test to test that returns proper xml. > >> > >> The test is written as so > >> def testValue() = { > >> val xml = > >> <xml:group> > >> <tr> > >> <td> > >> <p:fullName>My Name</p:fullName> > >> </td> > >> <td> > >> <p:style>Fighter Style</p:style> > >> </td> > >> <td> > >> <p:weight>Weight</p:weight> > >> </td> > >> </tr> > >> </xml:group> > >> val trainer = new Trainer() > >> val output = trainer.showPeople(xml) > >> () > >> } > >> > >> The User object inherits from MegaProtoUser. > >> > >> The problem is I am not sure how to create a mock user and sign them > >> in. > >> I have tried in my unit test > >> override def setUp : Unit = { > >> val user = User.create > >> user.firstName("XXX") > >> user.lastName("YYY") > >> user.save > >> User.logUserIn(user) > >> } > >> > >> The mock user log-in *seems* to work fine but when > >> User.currentUser.open_! is called it throws an exception on trying to > >> open an empty box. > >> > >> So either how do I do this or how do others do this type of testing. > >> I am sure I am missing something simple. > >> > >> Thanks, > >> ryan > >> > >> > >> > >> > >> > >> > > > > > > > > -- > > Lift, the simply functional web framework http://liftweb.net > > Beginning Scala http://www.apress.com/book/view/1430219890 > > Follow me: http://twitter.com/dpp > > Surf the harmonics > > > > > > > > > > > -- > Bill Venners > Artima, Inc. > http://www.artima.com > > > > -- Lift, the simply functional web framework http://liftweb.net Beginning Scala http://www.apress.com/book/view/1430219890 Follow me: http://twitter.com/dpp Surf the harmonics --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Lift" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~----------~----~----~----~------~----~------~--~---
