The Archives

SEARCH

I’m Attending

CodeMash

Tag Archives: .NET

Legacy Code Under Test Revisited and Working

Posted in: Programming by Steve on September 18, 2010

So after writing my last post, I was trying to look at it from a high level again.  The condition I was trying to determine was only if a single value on a parameter was set to a particular value.  In this case, my test was:

[Test]
public void user_added_to_position_sets_default_of_IsAssigned_equals_true_value()
{
  // test goes here
}

In essence, I want to verify that IsAssigned = true when it’s being saved for the first time.  In my last blog post, I was making sure that the entire entity matched instead of just this single value.  This devalued the test and didn’t test for the condition I was expecting. 

So I rewrote the assertion to look like this:

Isolate.Verify.WasCalledWithArguments(() => posUserRepo.Save(null, ref tran))
   .Matching(args => (((PositionUsersEntity) args[0]).IsAssigned));

Trying to make the test more simple ended up fixing my problem. 

Wrangling your Legacy Code

Posted in: Programming by Steve on September 17, 2010

I was working on getting a piece of legacy code under test.  I had all the pieces in place, refactored and set to go.  I tried to run a failing test and BOOM: the unexpected. 

The test failed, but for a reason that I can’t explain.  The entity that I was trying to verify was calling the database, even though I was not explicitly calling the database.  I actually had the whole transaction mocked.  However, when Typemock was trying to verify that something was called with an exact argument:

Isolate.Verify.WasCalledWithExactArguments(() => _posRepo.Save(pos, ref tran));

The “pos” entity was calling code that I didn’t want it to.  I went to debug the test to make sure I wasn’t crazy, and sure enough: this line of code was the culprit.  It didn’t have anything to do with the method I was testing, but one of the properties in the “pos” entity was calling the database.

My next course of action is to change the “pos” entity to a mocked entity to see if that will “fix the glitch” but I was rather upset that I was fighting the tooling instead of fixing the problem.  The code works, just not under test.

I’m Attending the Chicago .NET Users Group VS2008 Installfest

Posted in: Programming by Steve on December 11, 2007

I’ll be here tomorrow.  I’m getting myself VS2008 and blogging about it while I’m there.  I’ve got my camera ready and I’ll be setting up shop, maybe get an interview or two.