ある時点でアドレスをデータベースに保存しているように聞こえます。
a)アドレス帳は、追加されたアドレスを何らかの方法で公開する必要があります-「GetAddresses」メソッドまたは「AddedAddresses」パブリックプロパティを介して-他のオブジェクトによって取得および保存できるようにします(おそらく言った); また
b)アドレス帳クラスにある種の「保存」メソッドがあり、アドレスをDBに保存する操作を開始します。これは、アドレス帳クラス内で他のオブジェクトに依存していることを意味します。リポジトリまたはデータ アクセス クラスとして。
a) の場合は、そのメソッドまたはプロパティを呼び出して、アドレスが期待どおりに追加されていることを確認する必要があります。b) の場合、偽のデータ アクセス クラスをアドレス帳に提供し、その偽のパブリック プロパティを公開し、アドレス帳で "Save" メソッドを呼び出し、偽のパブリック "Addresses" プロパティで検証を行うことができます。次のようなデータアクセスクラス:
(言語について言及していないので、これは単なる擬似コードです)
class addressbook
private _dataAccess
private addresses
constructor (dataaccess) _dataAccess = dataAccess
public method AddAddress(address) addresses.add(address)
public method save() _dataaccess.save(addresses)
class fakedataaccess
public addresses
public method save(addresses) addresses = addresses
{test}
public test AddingAddressesWorks
fake = new fakedataaccess
book = new addressbook(fake)
// Do stuff to add addresses to addressbook
book.save
assert fake.addresses == the_addresses_i_added
うまくいけば、それは理にかなっています。モックでこれを実現することもできますが、それは私の疑似コード fu の範囲を超えており、コンセプトはとにかく同じです。
しかし、いずれにせよ、検証したいものを検証するために、何か他のものを呼び出す必要がある (したがって、別の構成をテストしていると主張する可能性がある) ことは正しいです。
個人的には、私だったら、アドレス帳にパブリックな「Addresses」プロパティを追加します。