從亞馬遜開箱即用的無服務器示例沒有提供簡單的「按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 –