私は依存性注入コンテナーの初心者であり、モッキングと組み合わせてそれらを使用して頭を悩ませようとしています。
コントローラーとリスト (モデル) があるとします。
IBlahList = interface
property Items[AIndex: integer]: IBlah read GetItem;
end;
IController = interface
property List: IBlahList read GetList;
end;
IController の実装は次のようになります (次のimplementaion
セクションにあることに注意してください。
implementation
TController = class (TInterfacedObject, IController)
private
FList: IBlahList;
function GetList: IBlahList;
public
constructor Create(const AList: IBlahList);
end;
そしてもちろん、このクラス (および IBlahList のクラス) を次のように登録しますGlobalContainer
。
GlobalContainer.RegisterType<TController>.Implements<IController>;
implementation
TController クラスを直接参照できないように、さまざまな情報源 (とにかく Nick Hodges です!) で示唆されているように、TController をセクションに配置します。
ここで、単体テストで ICollection の実装をテストしたいとします。
procedure TestSomething
var
LMockList: TMock<IBlahList>;
LController: IController;
begin
LMockList := TMock<IBlahList>.Create;
// Oops, I can't do this, I can't access TController
LController := TController.Create(LMockList);
end;
それで、私の質問は、TController クラスをinterface
セクションに移動してテストできるようにする必要があるか、またはまだ見つけていないコントローラーにモック IBlahList を渡す方法が他にありますか?