New 42-day free trial
Smarty

Your Convey needs more focus

Smarty header pin graphic
February 7, 2014
Tags

One of the great benefits of TDD/BDD is that you usually don't have to spend much, if any time at all in a debugger. To enter a debugger is to admit a loss of control over the system under test. Even so, there are times when you do need to debug something, even if you're maintaining the discipline.

Lately, most of my coding is in GoLang. Coming from using an IDE almost exclusively to write Python (using PyCharm) and C# (using VS and ReSharper), and knowing how great the visual debugging tools are it's hard to fathom using a console-based debugger for GoLang code. Yes, I know about godbg, which is an amazing tool, but I would rather stay in my test runner of choice, which is GoConvey.

Up until now I would do something like this to achieve debugging:

  • Add log.Println statements where the bugs are
  • Use SkipConvey to limit execution to the test in question (this can get tedious if the test suite is large)
  • Run the tests and observe the output

Or...

  • Add the logging statements
  • Use an init function in the test code to substitute a nil writer to the logger
  • Substitute stdout in the Convey scope that executes the code with logging
  • run the tests and observe the output

Yuck.

Now, there's a better way. It still means putting in some logging, which may or may not be temporary. But, all you have to do now is something like this:

FocusConvey("Subject: Integer incrementation and decrementation", t, func() {
	var x int
FocusConvey("Given a starting integer value", func() {
	x = 42

	FocusConvey("When incremented", func() {
		x++

		Convey("The value should be greater by one", func() {
			So(x, ShouldEqual, 43)
		})
		FocusConvey("The value should NOT be what it used to be", func() {
			So(x, ShouldNotEqual, 42)
		})
	})
	Convey("When decremented", func() {
		x--

		Convey("The value should be lesser by one", func() {
			So(x, ShouldEqual, 41)
		})
		Convey("The value should NOT be what it used to be", func() {
			So(x, ShouldNotEqual, 42)
		})
	})
	Reset(func() {
		x = 0
	})
})

})

In this code, only those scopes declared with FocusConvey will be executed, the reset will be ignored. Much easier to toggle for debugging purposes.

Of course, you shouldn't leave the test suite with a bunch of FocusConvey calls lying around. After you fix your code get rid of the Focus and just keep Convey.

Happy debugging!

Subscribe to our blog!
Learn more about RSS feeds here.
rss feed icon
Subscribe Now
Read our recent posts
You always need Smarty, unless...
Arrow Icon
We’ll be honest: there are some rare, creative, and oddly inspiring scenarios in which traditional address validation tools—like Smarty—might not be top of mind. Take Gary, for instance. He runs a mail-order sourdough bakery and believes address typos give his shipping process a “personal touch. ” His customers now expect their loaves to go on postal pilgrimages, complete with handwritten notes and breadcrumb trails. Literally. Or Eleanor, who’s lived in the same town for 62 years, ships packages with descriptions like “the blue house with the tire swing near the old Peterson farm.
Why address verification is the necessary complement to autocomplete
Arrow Icon
Address autocomplete is a powerful tool for improving form completions and ensuring users select real, deliverable addresses at entry. However, to maintain long-term data integrity and enhance address-related insights, address verification is a necessary complement. Here’s why:1. Gain up to 55 points of metadata per verified addressAutocomplete provides real-time address suggestions, while address verification appends additional metadata. Address verification enhances each address with up to 55 points of data, such as:ZIP-9 level accuracy geocoordinates (rooftop accuracy also available)ZIP+4 CodesResidential Delivery Indicator (RDI) to identify residential vs.
Property data fuels a Smarty-er search for Sasquatch
Arrow Icon
Bigfoot. Sasquatch. Ol’ Filthy Albert. No matter what you call him, you know who we’re talking about: the hairy giant cryptid who haunts our collective imagination and, according to about 13% of the US population, wanders the American wilderness. The traditional perception of Sasquatch is that of a solitary creature whose run-ins with people are the unavoidable consequence of human development and exploration. If recent sightings are any indication, it seems the legendary creature may have more on their mind than just staying hidden.

Ready to get started?