CasOperations.GetImpairedNodesFromCASpectrumAsync()
メソッドを模擬して、模擬値を返すことはできますか?現在、例外が発生しています(コード例の下に表示されています)。Moq - クラスプロパティのメソッドを返すことができません。戻り値
クラスとプロパティを嘲笑する:
public class BranchCircuitStatusScheduleEntry : NWatchCustomScheduleEntryBase, INWatchCustomScheduleEntry
{
public BranchCircuitStatusScheduleEntry(INWatchSchedulerApplication application)
: base(application, DevOpsScheduleFrequency.Minute, 15, 0, DevOpsScheduleFlags.Always)
{
// Some initialization for below properties
CasOperations = new CasOperations(cas, EntityService, IsBranchesOnly);
}
public CasOperations CasOperations { get; private set; }
}
public class CasOperations
{
public CasOperations(CasApi casApi, BranchCircuitEntityService entityService, bool isBranchesOnly)
{
CAS = casApi;
this.entityService = entityService;
this.isBranchesOnly = isBranchesOnly;
}
}
テストモックを実行しようとします:
[TestMethod]
public void DownNodeRediscoveredInSpectrum()
{
var mock = new Mock<BranchCircuitStatusScheduleEntry>(_application);
mock.CallBase = true;
// Spectrum's artificial response with a model with the same name, but a "new" model handle
var mockedNewlyImpairedNodes = new NetworkDeviceNodeStatus[]
{
new NetworkDeviceNodeStatus
{
// Not important
}
};
mock.Setup(x =>
x.CasOperations.GetImpairedNodesFromCASpectrumAsync()).ReturnsAsync(mockedNewlyImpairedNodes);
}
例外でスロー
私は次のセットアップを持っていますテスト:
タイプ 「Castle.DynamicProxy.InvalidProxyConstructorArgumentsException」 の例外がMoq.dllで発生したが、ユーザーコードの追加 情報で処理されませんでした: NWatch.NetworkCircuits.CasOperations:クラスのプロキシをインスタンス化することはできません。パラメータなしの コンストラクタが見つかりませんでした。あなたが
BranchCircuitStatusScheduleEntry
の動作を模擬しようとしていないモックの設定でが、
CasOperations
クラスの振る舞い:
これでメソッドを呼び出すには、確かに 'CasOperations'のインスタンスが必要です。おそらく、代わりに 'ICasOperations'を作るべきでしょう。これは模擬オブジェクトを簡単に挿入することができます。 – Jonesopolis
しかし、模擬されたBranchCircuitStatusScheduleEntryには既にインスタンスがあります。私はMoqにそのメソッドの1つをオーバーライドさせて、私が望む値を返すことができればと思っていました。 – blgrnboy