Using the Fluent NHibernate Persistence Tester

Mappings are a critical part of any NHibernate application. In this recipe, I'll show you how to test those mappings using Fluent NHibernate's Persistence tester.

Getting ready

Complete the Fast testing with SQLite in-Memory database recipe mentioned previously in this chapter.

How to do it...

  1. Add a reference to FluentNHibernate.
  2. In PersistenceTests.cs, add the following using statement:
    using FluentNHibernate.Testing;
  3. Add the following three tests to the PersistenceTests fixture:
    [Test]
    public void Product_persistence_test()
    {
      new PersistenceSpecification<Product>(Session)
        .CheckProperty(p => p.Name, "Product Name")
        .CheckProperty(p => p.Description, "Product Description")
        .CheckProperty(p => p.UnitPrice, 300.85M)
        .VerifyTheMappings();
    }
    
    [Test]
    public void ActorRole_persistence_test()
    {
      new PersistenceSpecification<ActorRole>(Session)
      .CheckProperty(p => p.Actor, "Actor Name")
      .CheckProperty(p => p.Role, "Role")
      .VerifyTheMappings();
    }
    
    [Test]
    public void Movie_persistence_test()
    {
      new PersistenceSpecification<Movie>(Session)
      .CheckProperty(p => p.Name, "Movie Name")
      .CheckProperty(p => p.Description, "Movie Description")
      .CheckProperty(p => p.UnitPrice, 25M)
      .CheckProperty(p => p.Director, "Director Name")
      .CheckList(p => p.Actors, new List<ActorRole>()
      {
        new ActorRole() { Actor = "Actor Name", Role = "Role" }
      })
      .VerifyTheMappings();
    }
  4. Run these tests with NUnit.

How it works...

The Persistence tester in Fluent NHibernate can be used with any mapping method. It performs the following four steps:

  1. Create a new instance of the entity (Product, ActorRole, Movie) using the values provided.
  2. Save the entity to the database.
  3. Get the entity from the database.
  4. Verify that the fetched instance matches the original.

At a minimum, each entity type should have a simple Persistence test, such as the one shown previously. More information about the Fluent NHibernate Persistence tester can be found on their wiki at http://wiki.fluentnhibernate.org/Persistence_specification_testing.

See also

  • Testing with the SQLite in-memory database
  • Using the Ghostbusters test
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.144.31.163