그래픽 메서드 CancelChanges()가 ViewModel에 의해 사용되고 호출되었습니다. 이 메서드를 테스트하고 싶지만 내부에 Task가 있습니다. 작업을 사용하여 UI를 고정하지 않습니다. 테스트 방법은 결과를 확인하기 위해이 태스크의 결과를 기다려야합니다.단위 작업 내에서 작업으로 void 메서드를 테스트하십시오.
코드는 다음과 같습니다
public override void CancelChanges()
{
Task.Run(
async() =>
{
this.SelectedWorkflow = null;
AsyncResult<IncidentTypeModel> asyncResult = await this.Dataprovider.GetIncidentTypeByIdAsync(this.Incident.Id);
Utils.GetDispatcher().Invoke(
() =>
{
if (asyncResult.IsError)
{
WorkflowMessageBox.ShowException(
MessageHelper.ManageException(asyncResult.Exception));
}
else
{
this.Incident = asyncResult.Result;
this.Refreshdesigner();
this.HaveChanges = false;
}
});
});
}
그리고 내 시험 방법 :
우리가 작업의 결과를 기다리고 내 검사를 할 수있는 방법/// <summary>
/// A test for CancelChanges
/// </summary>
[TestMethod]
[TestCategory("ConfigTool")]
public void CancelChangesTest()
{
string storexaml = this._target.Incident.WorkflowXamlString;
this._target.Incident.WorkflowXamlString = "dsdfsdgfdsgdfgfd";
this._target.CancelChanges();
Assert.IsTrue(storexaml == this._target.Incident.WorkflowXamlString);
Assert.IsFalse(this._target.HaveChanges);
}
?
감사합니다.
는 반환 형식'Task'을 만들 수 있습니까? 또한,'GetIncidentTypeByIdAsync'가 비동기 적이기 때문에 (그리고 잘하면 non-blocking) 당신이'Task.Run'을 필요로하지 않는 것처럼 보입니다. – usr