Wha*_*uce 0 c# asp.net-mvc unit-testing moq
我有一个控制器:
public class SelectController : Controller {
private readonly IChartService _chartService;
private readonly IProductService _productService;
private readonly IStoreService _storeService;
public SelectController ( IChartService chartService,
IProductService productService,
IStoreService storeService ) {
_chartService = chartService;
_productService = productService;
_storeService = storeService;
}
[HttpGet]
[Route( "stores" )]
public Task<IEnumerable<IStore>> GetStoresInfo ( string encryptedUserId ) {
return _storeService.GetStoresInfo( EncryptionProvider.Decrypt( encryptedUserId ) );
}
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试GetStoresInfo使用Moq 进行测试.这就是我到目前为止所做的一切:
[Fact]
public class Controller_Returns_List_Of_Stores()
{
//Arrange
var mockStoreService = new Mock<IStoreService>();
var mockChartService = new Mock<IChartService>();
var mockProductService = new Mock<IProductService>();
var controller = new SelectController(mockChartService, mockProductService, mockStoreService);
//Act
//Assert
}
Run Code Online (Sandbox Code Playgroud)
新的SelectController不会接受我传递的3个对象,因为无法转换InService为InService.我打算做更多的设置吗?或者它与返回类型是一个任务有关吗?
任何帮助非常感谢.
调用.Object模拟来传递模拟对象.
var controller = new SelectController(
mockChartService.Object,
mockProductService.Object,
mockStoreService.Object
);
Run Code Online (Sandbox Code Playgroud)
您还需要设置模拟对象的行为,以便它们在调用时按预期运行.
IEnumerable<IStore> fakeData = new List<IStore>();
mockStoreService
.Setup(_ => _.GetStoresInfo(It.IsAny<string>()))
.Returns(Task.FromResult<IEnumerable<IStore>>(fakeData));
Run Code Online (Sandbox Code Playgroud)
参考Moq Quickstart以更好地理解如何使用模拟框架.
| 归档时间: |
|
| 查看次数: |
58 次 |
| 最近记录: |