programing

사람들은 Linq to SQL을 사용하는 코드를 단위 테스트하는 방법

itsource 2021. 1. 16. 09:46
반응형

사람들은 Linq to SQL을 사용하는 코드를 단위 테스트하는 방법


사람들은 Linq to SQL을 사용하는 코드를 어떻게 단위 테스트합니까?


최신 정보:

Fredrik은 자신의 블로그에 단위 테스트 linq2sql 애플리케이션을 수행하는 방법에 대한 예제 솔루션을 제공했습니다. 다음에서 다운로드 할 수 있습니다.

http://web.archive.org/web/20120415022448/http://iridescence.no/post/DataContext-Repository-Pattern-Example-Code.aspx

그가 예제 솔루션을 게시 한 것이 대단하다고 생각할뿐만 아니라 모든 클래스에 대한 인터페이스를 추출하여 디자인을 더욱 분리 할 수있었습니다.

내 이전 게시물 :

* DataContext 래퍼를 만들기위한 좋은 시작이라고 생각되는 다음 블로그를 찾았습니다. Link1 Link2

첫 번째 항목이 테이블에 대한 인터페이스를 추출하는 수단을 구현한다는 점을 제외하면 거의 동일한 주제를 다룹니다. 두 번째는 더 광범위하므로 여기도 포함했습니다. *


3 년 늦었지만 이것이 내가하는 방법입니다.

https://github.com/lukesampson/LinqToSQL-test-extensions/

래퍼를 작성하거나 많은 배관 작업을 할 필요가 없습니다. T4 템플릿을 .dbml 옆에 놓기 만하면 다음과 같은 결과를 얻을 수 있습니다.

  1. 데이터 컨텍스트에 대한 인터페이스 (예 : IExampleDataContext)
  2. 데이터 컨텍스트에 대한 메모리 내 모의 (예 : MemoryExampleDataContext)

둘 다 DBML에서 이미 구성한 매핑을 자동으로 사용합니다.

그래서 당신은 같은 일을 할 수 있습니다

public class ProductRepo {
    IExampleDataContext DB { get; set };
    public ProductRepo(IExampleDataContext db) {
        DB = db;
    }

    public List<Product> GetProducts() {
        return DB.Products.ToList();
    }
}

다음 중 하나로 호출 할 수 있습니다.

new ProductRepo(new MemoryExampleDataContext()).GetProducts(); // for testing

또는

new ProductRepo(new ExampleDataContext()).GetProducts(); // use the real DB

DataContext를 래핑 한 다음 래퍼를 모의합니다. 이를 수행하는 가장 빠른 방법이므로 일부 사람들은 냄새가 나는 것으로 생각하는 테스트 용 코딩이 필요합니다. 그러나 때로는 (쉽게) 조롱 할 수없는 종속성이있는 경우 유일한 방법입니다.


Linq는 테스트를 훨씬 쉽게 만듭니다. Linq 쿼리는 Linq-to-sql 항목에서와 마찬가지로 목록에서도 잘 작동합니다. 목록 객체를 위해 Linq를 SQL로 교체하고 그런 방식으로 테스트 할 수 있습니다.


Wayward Web Log의 Mattwar 는 확장 가능한 Linq2Sql 데이터 컨텍스트를 모형화 하는 방법에 대한 훌륭한 기사를 제공했습니다. 확인하기 -MOCKS NIX-SQL DATACONTEXT에 대한 확장 가능한 LINQ


일반적으로 LINQ to SQL을 사용하는 코드 부분을 테스트 할 필요는 없지만 실제로 원하는 경우 서버에 대해 쿼리하는 것과 동일한 데이터 집합을 사용하여 메모리 내 개체로 변환 할 수 있습니다. 이에 대해 LINQ 쿼리를 실행합니다 (Queryable 대신 Enumerable 메서드를 사용함).

또 다른 옵션은 Matt Warren의 모형 버전의 DataContext를 사용하는 것 입니다.

LINQ to SQL에서 사용하는 SQL 문은 디버거 (IQueryable 개체에서)를 통해 가져 와서 가져 와서 수동으로 확인한 다음 자동화 된 테스트에 포함 할 수도 있습니다.


LINQ to SQL은 DBML에 정의 된 것에서 즉석에서 데이터베이스를 생성 할 수있는 기능이 있으므로 단위 테스트에 정말 좋습니다.

DataContext를 통해 DB를 생성하고 처음에는 비워 두어 ORM 레이어를 테스트하는 것이 정말 좋습니다.

여기 내 블로그에서 다룹니다. http://web.archive.org/web/20090526231317/http://www.aaron-powell.com/blog/may-2008/unit-testing-linq-to-sql. aspx

참조 URL : https://stackoverflow.com/questions/52657/how-are-people-unit-testing-code-that-uses-linq-to-sql

반응형