是否可以根据输入返回不同的结果,如
MoqSecurityAdminHelper.Setup(x => x.GetAllQuestions(It.IsAny<Boolean>()))
.Returns(new Dictionary<String, String>
{
{"Key1", "Value1"},
{"Key2", "Value2"}
});
Run Code Online (Sandbox Code Playgroud)
但如果参数为true,则返回一个结果,如果为false则返回另一个结果.
或者是唯一的方法来进行2个单独的设置?
谢谢
有可能进行单元测试吗?
public class MyRepository<T> where T : IdentityUser, new()
{
public async Task UpdateAsync(T user)
{
_context.Entry(user).State = EntityState.Modified;
_context.Entry(user).Property("UserName").IsModified = false;
await _context.SaveChangesAsync();
}
}
Run Code Online (Sandbox Code Playgroud)
[TestInitialize]将1个用户添加到存储库
_user = new IdentityUser { Id = "70a038cdde40" };
IDbSet<IdentityUser> users = new FakeDbSet<IdentityUser> { _user };
var dbContext = new Mock<MyDbContext<IdentityUser>>();
dbContext.Setup(x => x.Users).Returns(() => users);
_repository = new MyRepository<IdentityUser>(dbContext.Object);
Run Code Online (Sandbox Code Playgroud)
而我正试着用这个来测试
private MyRepository<IdentityUser> _repository;
[TestMethod]
public async Task UpdateUser_Success2()
{
var user = await _repository.FindByIdAsync("70a038cdde40");
Assert.IsFalse(user.EmailConfirmed, "User.EmailConfirmed is True");
user.EmailConfirmed = true; …Run Code Online (Sandbox Code Playgroud) 如果我想锁定整个数组,我可以使用这样的synchronized关键字:
int arr[];
synchronized void inc(int a, int b){
arr[a]=arr[a]+b;
}
Run Code Online (Sandbox Code Playgroud)
但是我可以只锁定项目,arr[a]以便其他线程仍然可以同时读取/写入数组的其他项目吗?
我有一个静态方法
Public Shared Function UpdateGroup(ByVal details As GroupDetails)
As ControllerResult
Return _methodObject.UpdateGroup(details)
End Function
Run Code Online (Sandbox Code Playgroud)
被重构为能够在帮助下进行模拟
Private Shared _methodObject As ISecurityController =
New SecurityControllerMethodObject()
Public Shared Sub OverrideInstance(ByVal controller As ISecurityController)
_methodObject = controller
End Sub
Run Code Online (Sandbox Code Playgroud)
然后在我的测试中我有
var moqSecurityController = new Mock<ISecurityController>();
moqSecurityController
.Setup(x => x.UpdateGroup(groupDetails))
.Returns(controllerResult);
SecurityController.OverrideInstance(moqSecurityController.Object);
Run Code Online (Sandbox Code Playgroud)
如果我在最后一行放置一个断点,我可以看到groupDetails有它应该具有的内容以及controllerResult,所以我希望在调用Function UpdateGroup时,将返回controllerResult,这只是一个带有Message&的简单类成功属性.
但是,我得到的是Null/Nothing.
我错过了什么?
注意:您可能已经注意到,生产代码是在VB.NET中,我的测试是在C#中.