我是使用.NET MVC Web应用程序的新手.我正在使用Web应用程序的第4版.我正在开发一个页面来管理简单成员资格提供者的角色,我希望它是动态的.为了清楚我的意思,它将是这样的:

这样的事情非常简单.为此,我有一个复杂的ViewModel,例如:
public class UserInRolesModel
{
public List<string> AllRoleNames { get; set; }
public List<UserInRoles> UsersInRoles { get; set; }
public UserInRolesModel()
{
AllRoleNames = new List<string>();
UsersInRoles = new List<UserInRoles>();
}
public UserInRolesModel(List<string> allRoleNames, List<UserInRoles> usersInRoles)
{
AllRoleNames = allRoleNames;
UsersInRoles = usersInRoles;
}
}
public class UserInRoles
{
public UserInRoles(string user, List<string> userRoles, IEnumerable<string> allRoleNames)
{
User = user;
Roles = SetRoles(userRoles, allRoleNames);
}
private List<bool> SetRoles(List<string> userRoles, IEnumerable<string> allRoleNames)
{
return allRoleNames.Select(userRoles.Contains).ToList();
}
public string …Run Code Online (Sandbox Code Playgroud) 我在我的存储库周围做圆顶单元测试,直到我遇到一个奇怪的错误。四处搜索看看我是否没有犯已知错误,我可以简化它并注意到我遇到了同样的错误。看起来我无法正确模拟 IFindFluent 界面,我想知道我做错了什么。本次测试:
[Fact]
public void Test()
{
var ff = Substitute.For<IFindFluent<string, string>>();
ff.FirstOrDefaultAsync().Returns("asd");
}
Run Code Online (Sandbox Code Playgroud)
正在返回此错误消息:
NSubstitute.Exceptions.CouldNotSetReturnDueToTypeMismatchException:无法为 IDisposable.Dispose 返回 Task`1 类型的值(预期类型为 Void)。
确保在调用替代品后调用了 Returns()(例如:mySub.SomeMethod().Returns(value)),并且您没有在 Returns() 中配置其他替代品(例如,避免这样:mySub.SomeMethod( ).返回(ConfigOtherSub()))。
如果您替换了一个类而不是一个接口,请检查对您的替代品的调用是否在虚拟/抽象成员上。不能为非虚拟/非抽象成员配置返回值。
正确使用: mySub.SomeMethod().Returns(returnValue);
可能有问题的使用:mySub.SomeMethod().Returns(ConfigOtherSub()); 而是尝试: var returnValue = ConfigOtherSub(); mySub.SomeMethod().Returns(returnValue);
在 NSubstitute.Core.ConfigureCall.CheckResultIsCompatibleWithCall(IReturn valueToReturn, ICallSpecification spec) 在 NSubstitute.Core.ConfigureCall.SetResultForLastCall(IReturn valueToReturn, MatchArgs matchArgs) 在 NSubstitute.Core.SubstitutionContext.LastCallShouldReturn(IReturn value, Match.Args) at CorporateArgs match.Action Persistence.RepositoryTests.Test()
我四处搜索,但最常见的错误并不适合这个简单的实现。任何想法为什么这不起作用?