[英]How can I use or mock IWebJobsBuilder to do an integration test of my Azure Function v2?
[英]How can I use Mock to test my controller?
我有一個控制器:
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 ) );
}
}
我正在嘗試使用Moq測試GetStoresInfo
。 到目前為止,這就是我所擁有的:
[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
}
新SelectController
不會接受3個對象,我在路過由於暫時無法從轉換InService
到InService
。 我是否打算進行更多設置? 還是與返回類型為Task有關?
任何幫助,不勝感激。
在模擬對象上調用.Object
以傳遞模擬對象。
var controller = new SelectController(
mockChartService.Object,
mockProductService.Object,
mockStoreService.Object
);
您還需要設置模擬對象的行為,以使它們在被調用時能夠按預期運行。
IEnumerable<IStore> fakeData = new List<IStore>();
mockStoreService
.Setup(_ => _.GetStoresInfo(It.IsAny<string>()))
.Returns(Task.FromResult<IEnumerable<IStore>>(fakeData));
參考Moq快速入門 ,以更好地了解如何使用模擬框架。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.