我有一个带有这样功能的Web api:
[HttpPost]
public IHttpActionResult PostData([FromBody] JObject new_data)
{
//Some code here
var fullPath = System.Web.Hosting.HostingEnvironment.MapPath(@"~/App_Data/data.txt");
System.IO.File.WriteAllText(fullPath, new_data.ToString());
return Ok();
}
然后我正在测试这个api:
[TestMethod]
public void TestPostData()
{
// Arrange
JObject data = getSampleData();
var controller = new MyController();
//Act
IHttpActionResult result = controller.PostData(data);
//Assert
Assert.IsInstanceOfType(result, typeof(OkNegotiatedContentResult<JObject>));
}
我在下面的行中收到错误:
System.IO.File.WriteAllText(fullPath, new_data.ToString());
错误说: 消息:测试方法NetWorth.Tests.UnitTest1.TestPostData抛出异常: System.ArgumentNullException:值不能为null。 参数名称:路径
有人可以帮忙吗?我是ASP和c#以及单元测试的新手!任何建议都会有所帮助。
我应该说api在我运行时效果很好,这个问题就在测试时。
答案 0 :(得分:0)
进行测试,使用文件的完整路径而不是var fullPath = System.Web.Hosting.HostingEnvironment.MapPath(@"~/App_Data/data.txt");
例如,让方法采用一个文件路径,如果没有传递,将等于你的常量