向Azure Functions编写单元测试时,如何设置环境变量?
下面是给定的示例代码,其中原始函数使用键 sqldb_conn 从Environment变量获取SQL连接字符串。
namespace LoanData.API
{
public static class LoanFunction
{
[FunctionName("get-loan")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
log.LogInformation($"C# HTTP trigger function executed at: {DateTime.Now}");
string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
dynamic data = JsonConvert.DeserializeObject(requestBody);
List<Models.Loan> loan = new List<Models.Loan>();
var SqlConnStr = Environment.GetEnvironmentVariable("sqldb_conn");
try
{
String commandText = "SELECT * FROM [dhub_data].[LOAN_INFO_V2]";
using (SqlDataReader reader = Utils.SQLHelper.ExecuteReader(SqlConnStr, commandText, CommandType.Text, null))
{
if (!reader.HasRows)
{
log.LogInformation("No data returned");
}
while (reader.Read())
{
Models.Loan loan = new Models.Loan();
loan.ID = SQLReaderExtensions.SafeGetString(reader, "ID");
loan.NAME = SQLReaderExtensions.SafeGetString(reader, "NAME");
loan.LAST_UPDATE_DATE = SQLReaderExtensions.SafeGetString(reader, "LAST_UPDATE_DATE");
loan.CREATED_BY = SQLReaderExtensions.SafeGetString(reader, "CREATED_BY");
loan.CREATION_DATE = SQLReaderExtensions.SafeGetString(reader, "CREATION_DATE");
loanResponse.Add(loan);
log.LogInformation(loan.ToString());
}
reader.Close();
}
if (loanResponse.Count > 0)
{
return new OkObjectResult(loanResponse);
}
else
{
return new NotFoundResult();
}
}
catch (Exception ex)
{
log.LogError(ex.Message);
return new BadRequestObjectResult(ex.Message);
}
}
}
}
以下是为上述Azure函数编写的示例测试代码:
[Fact]
public async void Http_trigger_should_return_known_string()
{
var request = TestFactory.CreateHttpRequest("name", "Bill");
var response = (OkObjectResult)await HttpTrigger.Run(request, logger);
Assert.Equal("Hello, Bill", response.Value);
}
如何修改此设置以适合我的功能?跟随https://docs.microsoft.com/en-us/azure/azure-functions/functions-test-a-function
答案 0 :(得分:1)
您可以在单元测试中手动进行以下设置:
Environment.SetEnvironmentVariable("key", "value");