Hi all, I added a specs version as well.
Eric. On Oct 2, 2:37 pm, Bill Venners <[email protected]> wrote: > Hi Ryan, David, Eric, > > I added a ScalaTest version to your wiki page: > > http://wiki.github.com/dpp/liftweb/how-to-unit-test-lift-snippets-wit... > > Eric you may want to add a specs version. > > Bill > > > > > > On Thu, Oct 1, 2009 at 3:03 PM, rstradling <[email protected]> wrote: > > > Awesome!!! Thanks guys for the help. It now works. > > > I put a how-to wiki document up on github. For me this was one of > > those times where my google searches did not seem to turn up anything > > fruitful, so I thought this how-to would be helpful. If it is not > > helpful, then no hard feelings if the page is deleted. I just wanted > > to give back. > > > Wiki page > >http://wiki.github.com/dpp/liftweb/how-to-unit-test-lift-snippets-wit... > > > On Oct 1, 4:53 pm, David Pollak <[email protected]> wrote: > >> 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 frameworkhttp://liftweb.net > >> > > Beginning Scalahttp://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 frameworkhttp://liftweb.net > >> Beginning Scalahttp://www.apress.com/book/view/1430219890 > >> Follow me:http://twitter.com/dpp > >> Surf the harmonics > > -- > Bill Venners > Artima, Inc.http://www.artima.com- Hide quoted text - > > - Show quoted text - --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
