Datomic 트랜잭션 데이터를 생성하는 Clojure에 몇 가지 코드를 작성했으며 데이터가 예상대로 생성되었는지 확인하기 위해 몇 가지 테스트를 작성하고 싶습니다.Datomic 트랜잭션 데이터를 생성하는 테스트 코드
[{:db/id (d/tempid :db.part/user)
:some-field "Bob"}]
=
[{:db/id (d/tempid :db.part/user)
:some-field "Bob"}]
및
[{:db/id (d/tempid :db.part/user)
:ref-field (d/tempid :db.part/user -1)}
{:db/id (d/tempid :db.part/user)
:ref-field (d/tempid :db.part/user -1)}]
=
[{:db/id (d/tempid :db.part/user)
:ref-field (d/tempid :db.part/user -2)}
{:db/id (d/tempid :db.part/user)
:ref-field (d/tempid :db.part/user -2)}]
하지만, 그러나
[{:db/id (d/tempid :db.part/user -1)
:some-field "Bob"}]
!=
[{:db/id (d/tempid :db.part/user -2)
:some-field "Bob"}]
, 나는 단순히 비교할 수 없습니다
는 기본적으로, 나는 트랜잭션 데이터에 대한 것을 설명 할 수 있어야합니다 예상 된 값을 가진 결과물을 출력합니다. C가 생성 할 때까지 생성 된 정확한 DbID를 결코 알지 못할 것입니다. ode, 결과는 매번 다를 수 있습니다 (d/tempid ...)가 어쨌든 호출됩니다. 따라서 평등 검사는 false를 반환합니다.
누구나 일반적인 방법으로이를 수행하는 가장 좋은 방법은 없으므로 어떤 유형의 거래 데이터 (예 : 중첩 된 거래 데이터로 작동)와 관련하여도 실행할 수 있습니까?
오버라이드 된 equals 메소드를 사용하여 내 자신의 MockDbId 유형을 만든 다음이 모의 ID를 반환하는 테스트에서 (d/tempid ...)를 재정의했지만이를 달성하는 좋은 방법이라고 생각하지 않습니다. 원하는 행동.
모든 조언을 주시면 감사하겠습니다.
감사합니다.
매트.
안녕하세요 Alan - 답장을 보내 주셔서 감사합니다. 귀하의 솔루션은 예제에서 첫 번째 코드 블록에 대해서는 문제가 없지만 다른 부분에는 필요한 기능을 제공하지 않습니다. 예를 들어 두 번째 블록에서 첫 번째 맵의 temp id가 두 번째 맵의 temp id와 동일한 지 확인해야하므로 값을 완전히 무시할 수는 없습니다. 와일드 카드로는이 작업을 수행 할 수 없습니다. – Sigmoidal
유스 케이스가 무엇인지 확실하지 않지만 포스트 - 트랜잭션 값을 확인할 수있는 방법을 보여주는 답을 업데이트했습니다. –