0

단위 테스트 및 EF 코드에서 처음 추가되었습니다. EF를 사용하여 데이터베이스에 데이터를 추가하는 기능을 테스트하려고합니다. 나는 그것이 실패 뭐가 잘못 내 코드와 잘 모릅니다하지만 여기 을 전달 m 클래스 m 테스트 기능 여기이 단위 테스트에서 뭔가 잘못되었습니다. EF

[TestClass] 
public class ProspectControllerTest 
{ 
    [TestMethod] 
    public void Index() 
    {  
    DataContext context = new DataContext(); 
      Seller c = new Seller 
      { 
       SellerName = "test20", 
       SellerDivision = "test20", 
       SellerCity = "City410", 
       Active = true, 

      }; 
     context.sellers.Add(c); 

      context.SaveChanges(); 


      Seller s = (from d in context.sellers 
         where d.SellerId == c.SellerId 
         select d).Single(); 
      //This shouldent pass because there is no records in the db ! 
      c.SellerName.Equals(s.SellerName); 

     } 
    } 
} 

입니다

public class Seller 
{ 
    [Key] 
    public int SellerId { get; set; } 
    public string SellerName { get; set; } 
    public string SellerDiv { get; set; } 
    public string SellerCity { get; set; } 

    public Boolean Active { get; set; } 

    public Div Div { get; set; } 
    public ICollection<Prospect> prospects { get; set; } 
} 

또 다른 quastion로이 테스트 매장을 데이터를합니까 데이터베이스에있는 레코드를 볼 수 있어야합니까?

Assert.AreEqual<string>("asdfsadfasdfsadfsadf", c.SellerName); 

어설 문으로

답변

1

변경 다음 줄

//This should fail 
c.SellerName.Equals("asdfsadfasdfsadfsadf"); 

는 테스트 결과를 확인합니다.

올바른 개체가 DB에 삽입되었는지 여부를 확인하는 경우 다음 assert 문을 사용하여 확인하십시오.

Assert.IsNotNULL(s); 
Assert.AreEqual<string>("asdfsadfasdfsadfsadf",c.SellerName); 
+0

손목 시계 편집 Assert.AreEqual (c.SellerName, s.SellerName); 통과 althowgh 거기에 데이터가 없습니다 –

+0

내 대답을 편집했습니다. –

0

당신은 데이터베이스 (에 삽입 같은 작업을 수행 할 테스트 방법에 모의를 사용해야하지만, 코드를 실행하는 데 사용됩니다 데이터베이스에서 쿼리를 삽입하지 않습니다하지만 때문에 그것을 데이터베이스를 저장하지 않습니다 모의 사용).

참고 :이를 위해 MOCK 개념을 사용하십시오.

Assert.AreEqual(c.SellerName, "asdfsadfasdfsadfsadf"); 

그리고 어설 션을 사용하여 값을 확인하십시오.

+0

MOCK 개념을 모르는 경우 알려주십시오. 단위 테스트에서 중요한 부분입니다. – Aravindan

관련 문제