테스트 용 데이터베이스를 조정하면 작업 속도가 빨라질 수 있습니다. Ofc. 이것은 당신이 사용하고있는 db 유형에 달려 있습니다 ... db 통합 테스트를 통해 간단하게 트랜잭션을 롤백 할 수 있습니다. 다른 통합 테스트를 통해 데이터 액세스 계층을 조롱 할 수 있습니다. 당신은 선택의 여지가 있지만, 실제 데이터베이스와 해당 시스템을 검사하는 기능 테스트함으로써
...
나는 현재 설비를함으로써 많은 도움이 될 수있는 이벤트 소싱을 실험하고있다. 이 기술에 대한 가장 짧은 설명 : DDD (CQRS 권장)가 필요하고 이벤트 저장소에 도메인 이벤트를 저장 한 다음 이벤트 저장소에서 관련 이벤트를 가져 와서 현재 상태를 빌드하고 순서. 이 이벤트 저장소 위에 여러 가지 캐시 데이터베이스를 구축 할 수 있습니다.이 데이터베이스에는 서비스 구성 요소의 현재 상태 만 포함됩니다. 더 이상 ... 동기화 프로세스는 projections라는 클래스에 의해 수행되며 자동으로 동기화 또는 비동기라고합니다 이벤트를 저장하여
결정기구 :
event.storage.clear();
every.cache.clear();
var credentials = {
name: "infje",
password: "oéö9péüöáé9oilusw"
};
var resourceId = "swegretz34ze4wed";
var userDataSet = [
{
id: 1,
type: "UserCreate",
resource: resourceId,
identificationFactors: credentials,
nick: "inf3rno",
birthDate: "1333.03.03.",
hobbies: ["wall climbing"]
},
{
id: 2,
type: "UserUpdate",
resource: resourceId,
hobbies: ["base jumping", "knitting"]
}
];
event.storage.persistAll(userDataSet);
auth.cache.sync(event.storage); //a relational database with the user credentials
users.cache.sync(event.storage); //a nosql document database with the user profile
그래서 고정을하기 위해, 당신은 예를 들어
당신은 아주 간단한 REST API에서 다음처럼 작성할 수 있습니다 ... 전용 도메인 이벤트를 저장해야
기능 테스트 :
var response = http.get("https://my.test.api/users", credentials);
assert(response).toEqual({
size: 1,
items: [
{
id: resourceId,
nick: "inf3rno",
hobbies: ["base jumping", "knitting"],
birthDate: "1333.03.03."
}
]
});
참고 :이 개념 코드의 단지 증거이며, 암호 암호화, REST의 하이퍼 미디어 제약, 사설과 같은 세부 그래서 프로젝션 클래스의 C 호출 등은 지금 관련이 없습니다.
c. 이것은 원래의 접근 방식보다 느린 여전히 느린 이벤트이지만, 실제 데이터베이스를 테스트하려는 경우 해당 부분을 변경할 수 없으며 이벤트 소싱을 통해 테스트 픽스처를 만들고 데이터를 마이그레이션하고 캐시 데이터베이스의 구조를 새 릴리스 등 ... 그래서 시도해 볼만한 가치가 있습니다.
이미 Hudson, Maven, JWebUnit 및 기타 도구를 사용하고 있습니다. 종단 간 테스트는 주요 프로젝트가 성공적으로 완료 될 때마다 트리거됩니다. 그러나 흥미로운 질문은 테스트를 별도의 프로세스에서 실행하는 동안 데이터베이스에서 실제로 호스트되고 웹 애플리케이션에 캐시 된 환경을 설정하고 제거하는 방법입니다. –