2017-02-26 3 views
0

私のデータ/サービス層にこのメソッドがあります。ユニットテストのためにxUnitとMoQの使用を開始しています。私たちはIoCコンテナとしてAutofacを使用します。この特定のシナリオでMoqとxUnitを使用して単体テストを追加する方法はありますか?

xUnitとMoQを使用してこのメ​​ソッドの単体テストを設定するにはどうすればよいですか?あなたはモックユーザーマネージャを注入する必要がある 要求(必要な場合)フェイク

public async Task<AddressModel> AddAddress(string useridKey, AddressModel addressModel) 
{ 
    IAddress address = AddressConverters.ToIAddressFromAddressModel(addressModel); 
    IAddress newAddress = await _userManager.AddShippingAddressAsync(userKey, address).ConfigureAwait(false); 
    return AddressConverters.ToAddressModel(newAddress); 
} 
+0

これはちょっと難しいですね。見た目からは、AddShippingAddressAsyncを模倣するだけです。 autofac経由で_userMangerを取得しましたか? –

+0

@KeithNicholasはい_userManagerはAutoFac経由で取得されます – GilliVilla

答えて

0

の使用と特定のコード例は、

mockUserManager.Setup(arg=>arg.AddShippingAddressAsync(It.Is<string>, It.Is<IAddress>)) 
    .ReturnsAsync(myNewAddressWhateverYouWantToReturn); 

ような何かを私はxUnitの非同期サポートについては100%ないんだけど、それは

[Fact] 
private async Task TestAddingAddress() 
{ 
    // inject your mock, either here on setup... 

    var thingWithAdd = new Foo(); //or inject mock into constructor... 
    var newAddress = await thingWithAdd.AddAddress("", new AddressModel()); 

    // assert something about it.... 
} 

のようなものでなければなりませんように、それはしかし、私はあなたの機能のいくつかは何をすべきか見当がつかない、または、彼らが持っているものの依存関係、あなたには、いくつかのメートルを模擬する必要があるかもしれません見えます鉱石。

関連する問題