誰か助けてくれませんか?
このメソッドのモルを使用して単体テストを作成する必要があります。
public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
SPWebApplication webApp = properties.Feature.Parent as SPWebApplication;
foreach (SPJobDefinition job in webApp.JobDefinitions)
if (job.Name == "AAAA") job.Delete();
AssistantJob aJob = new AssistantJob(webApp);
SPDailySchedule schedule = new SPDailySchedule();
schedule.BeginHour = 2;
schedule.BeginMinute = 30;
schedule.BeginSecond = 0;
schedule.EndHour = 3;
schedule.EndMinute = 30;
schedule.EndSecond = 0;
aJob.Schedule = schedule;
aJob.Update();
}
しかし、テストを実行すると、次のエラー メッセージが表示されます。
failing test: MoleNotImplementedException, SPPersistedObjectCollection`1.GetEnumerator() was not moled.
このエラーは次の行で発生します。
foreach (SPJobDefinition job in webApp.JobDefinitions)
これは私の単体テストコードです:
[PexMethod]
public void FeatureActivated(
[PexAssumeUnderTest]ApprovalAssistantCleanupEventReceiver target
)
{
MSPFarm.BehaveAsNotImplemented();
BSPFeatureReceiverProperties props = new BSPFeatureReceiverProperties();
BSPFeature feature = new BSPFeature();
MSPWebApplication webapp = new MSPWebApplication();
props.Feature = feature;
feature.Parent = webapp.Instance;
webapp.JobDefinitionsGet = () => new MSPJobDefinitionCollection();
target.FeatureActivated(props);
}
インターネットで読んだことがありますが、Binding を使用して GetEnumerator() をコレクションに実装する必要があります。次に、これを実装するように単体テストを変更しましたが、エラーは同じです。AssistantJob クラスは JobDefinition 抽象クラスを実装します。
webapp.JobDefinitionsGet = () => new MSPJobDefinitionCollection().Bind(new MApprovalAssistantJob[] {
new MAssistantJob() { },
new MAssistantJob() { }
});
誰かがMSPJobDefinitionCollection内にMAssistantJob項目を追加するのを手伝ってくれませんか???
私の英語が下手ですみません。
どうもありがとう。