Moq à la Tâche attendent

Depuis que j'ai converti mon WCF méthodes Asynchrones, mon unité tests ont échoué, et je ne peux pas comprendre la syntaxe correcte pour les faire fonctionner.

Cllient classe proxy

 public interface IClientProxy
{
     Task DoSomething(CredentialDataList credentialData, string store);
}

classe de service

  public class CredentialSync : ICredentialSync
{
private ICredentialRepository _repository;
private IClientProxy _client;
public CredentialSync()
{
this._repository = new CredentialRepository();
this._client = new ClientProxy();
}
public CredentialSync(ICredentialRepository repository, IClientProxy client)
{
this._repository = repository;
this._client = client;
}
public async Task Synchronise(string payrollNumber)
{
try
{
if (string.IsNullOrEmpty(payrollNumber))
{
.... some code
}
else
{
CredentialDataList credentialData = new CredentialDataList();
List<CredentialData> credentialList = new List<CredentialData>();
//fetch the record from the database
List<GetCredentialData_Result> data = this._repository.GetCredentialData(payrollNumber);
var pinData = this._repository.GetCredentialPinData(payrollNumber);
//get the stores for this employee
var storeList = data.Where(a => a.StoreNumber != null)
.GroupBy(a => a.StoreNumber)
.Select(x => new Store { StoreNumber = x.Key.ToString() }).ToArray();
var credential = this.ExtractCredentialData(data, pinData, payrollNumber);
credentialList.Add(credential);
credentialData.CredentialList = credentialList;
foreach (var store in storeList)
{       
//this line causes an Object reference not set to an instance of an object error
await  _client.DoSomething(credentialData, store.StoreNumber);
}
}
}
catch (Exception ex)
{
throw new FaultException<Exception>(ex);
}
}

De La Classe De Test

 ///</summary>
[TestClass]
public class SynchTest
{
private Mock<ICredentialRepository> _mockRepository;
private Mock<IClientProxy> _mockService;
[TestInitialize]
public void Setup()
{
... some setups for repository which work fine
}
[TestMethod]      
public async Task SynchroniseData_WithOneEmployee_CallsReplicateService()
{
this._mockService = new Mock<IClientProxy>();
this._mockService.Setup(x=>x.DoSomething(It.IsAny<CredentialDataList>(), It.IsAny<string>()));
//arrange
string payrollNumber = "1";
CredentialSync service = new CredentialSync(this._mockRepository.Object, this._mockService.Object);
//act
await service.Synchronise(payrollNumber);
//assert                 
this._mockService.VerifyAll();
}

L'erreur, c'est quand ClientProxy.DoSomething est appelé:

Objet de référence non définie à une instance d'un objet

Les paramètres sont à la fois fines.

Si je convertir mon ClientProxy.DoSomething méthode à une méthode synchrone
(public void DoSomething(...) )le code fonctionne très bien, mais je n'ai besoin de cela pour être appelée de façon asynchrone

InformationsquelleAutor jazza1000 | 2015-02-18