2011-01-14 4 views

答えて

1

サービス層に対するユニットテストまたは仕様。

[TestMethod] 
    public void ItemsForBill_returns_expected_items_with_explicit_customer_id() 
    { 
     var customer = new Customer { Id = new Guid("{AB2F33FA-92E0-4B7C-8720-901CD9918796}") }; 
     var expectedItemId = new Guid("{B1493898-A832-4D83-A134-77790673A6D6}"); 
     var start = new DateTime(2010, 1, 1); 
     var stop = new DateTime(2010, 1, 31); 
     var items = new[] 
     { 
      new Item 
      { 
       Description = "Date out of range", 
       ItemDate = new DateTime(2010, 2, 10), 
       Payer = customer, 
       PayerCustomerId = customer.Id 
      }, 
      new Item 
      { 
       Description = "Should be included", 
       Id = expectedItemId, 
       ItemDate = new DateTime(2010, 1, 10), 
       Payer = customer, 
       PayerCustomerId = customer.Id 
      }, 
      new Item 
      { 
       Description = "Wrong payer", 
       ItemDate = new DateTime(2010, 1, 10), 
       Payer = new Customer() 
      } 
     }; 
     var uow = new FakeBillingUnitOfWork(); 
     uow.SetTestData(items.ToList()); 
     var activity = new SelectItemsForBillingRun(); 
     var input = new BillingRun 
     { 
      OneCustomerId = customer.Id, 
      Start = start, 
      Stop = stop 
     }; 

     var result = activity.ItemsForBillingRun(uow, input); 

     Assert.IsNotNull(result); 
     Assert.AreEqual(1, result.Count()); 
     var returned = result.Single(); 
     Assert.AreEqual(expectedItemId, returned.Id); 
    } 
+0

詳細を教えてください。 –

+1

私はビジネスドメインの知識を必要としない*非常に*簡単な例を追加しました。ほとんどの例はより洗練されています。これの利点は、単にあなたの推論を説明するだけではないということです。あなたはそれを証明する。 –

+0

ありがとうございます。非常に簡単な答えですが、あなたは私に多くのことを考えさせて、同僚と話し合いました。 –