2017-02-26 10 views
0

내 데이터/서비스 계층에이 방법이 있습니다. 단위 테스트를 위해 xUnit 및 MoQ의 사용을 시작합니다. 우리는 IoC 컨테이너로 Autofac을 사용합니다.이 특정 시나리오에서 Moq 및 xUnit을 사용하여 단위 테스트를 추가하는 방법은 무엇입니까?

xUnit 및 MoQ를 사용하여이 방법에 대한 단위 테스트를 설정하는 방법은 무엇입니까? (필요한 경우) 가짜의 사용과 요청 특정 코드 그림 그런 다음

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

내가 xUnit의 비동기 지원에 대해 100 % 아니에요 그런 짓을 모의 사용자 관리자를 주입 할 필요가

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

, 이

[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.... 
} 

과 같이해야처럼하지만 난 당신의 기능의 일부, 또는 그들이 가지고있는 의존성, 당신은 몇 m를 조롱해야 할 무슨 생각이 없다, 그러나 보인다 광물.