从亚马逊开箱即用的无服务器示例没有提供简单的“按F5”方式在本地运行代码。
在本地测试代码的最简单方法是使用单元测试创建示例。这些单元测试包含了初始化Functions
类所需的一切,以便您可以运行它。您可以将此代码移到简单的控制台应用程序中,或者创建涵盖您想要在本地测试的所有场景的单元测试。
下面是该项目的样本单元测试:
public class FunctionTest : IDisposable
{
string TableName { get; }
IAmazonDynamoDB DDBClient { get; }
public FunctionTest()
{
this.TableName = "AWSServerless2-Blogs-" + DateTime.Now.Ticks;
this.DDBClient = new AmazonDynamoDBClient(RegionEndpoint.USWest2);
SetupTableAsync().Wait();
}
[Fact]
public async Task BlogTestAsync()
{
TestLambdaContext context;
APIGatewayProxyRequest request;
APIGatewayProxyResponse response;
Functions functions = new Functions(this.DDBClient, this.TableName);
// Add a new blog post
Blog myBlog = new Blog();
myBlog.Name = "The awesome post";
myBlog.Content = "Content for the awesome blog";
request = new APIGatewayProxyRequest
{
Body = JsonConvert.SerializeObject(myBlog)
};
context = new TestLambdaContext();
response = await functions.AddBlogAsync(request, context);
Assert.Equal(200, response.StatusCode);
谢谢你的答案,但我已经知道如何从Visual Studio测试的API,我想知道的东西是,有没有什么办法来部署无服务器在你的本地环境中应用?正如我所说我已经尝试使用AWS SAM Local和LocalStack。 AWS SAM本地不支持dotnetcore运行时尚,我不知道如何使用dotnetcore locastack,因为没有dotnetcore应用程序的文档。 – JustAProgrammer
说实话,我甚至都不知道AWS SAM Local是一件事情。正如你所说,目前它不支持.NET Core。希望这种支持正在进行中。 SAM本地支持以下AWS运行时间: Node.js的4.3 Node.js的6.10 蟒2.7 蟒3.6 java8 http://docs.aws.amazon.com/lambda/latest/dg/test-sam -local.html –