You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用FakeItEasy测试ASP.NET MVC控制器时遇CS1929错误求助

解决FakeItEasy测试ASP.NET MVC控制器的语法错误

错误根源

你编写的FakeItEasy配置语法存在问题:把Returns()直接链式调用在GetAllItems()的返回结果(Task对象)后,但Returns()是FakeItEasy的IReturnValueConfiguration接口扩展方法,必须依附在A.CallTo()的返回值上,而非目标方法的返回值。

修正后的Fake配置代码

将测试方法中的Fake配置语句修改为:

A.CallTo(() => _factory._userService.GetAllItems())
  .Returns(Task.FromResult<IEnumerable<Person>>(fakepersons));

额外优化建议

你当前在构造函数中提前创建了HttpClient,若后续需要修改Fake行为再发起请求,建议将HttpClient的创建移至测试方法内部,确保Fake配置生效后再生成客户端:

[Fact]
public async Task GetAllItems_ReturnOkResult_WithListOFItems()
{
    var fakepersons = new List<Person>
    {
        new Person{Id=1, Firstname="Test1", Lastname="Test1", Email="Test1"},
        new Person { Id = 2, Firstname = "Test2", Lastname = "Test2", Email = "Test2" }
    };

    // 先配置Fake的返回行为
    A.CallTo(() => _factory._userService.GetAllItems())
      .Returns(Task.FromResult<IEnumerable<Person>>(fakepersons));

    // 再创建HttpClient发起请求
    using var client = _factory.CreateClient();
    var response = await client.GetAsync("/api/Home");

    Assert.Equal(HttpStatusCode.OK, response.StatusCode);
}

内容的提问来源于stack exchange,提问作者trying

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 01:10:03