小编koo*_*hka的帖子

使用lambda的条件Moq返回值

是否可以根据输入返回不同的结果,如

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个单独的设置?

谢谢

lambda unit-testing moq

24
推荐指数
1
解决办法
6639
查看次数

EF Entry.State上的单元测试失败

有可能进行单元测试吗?

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)

c# unit-testing entity-framework

9
推荐指数
1
解决办法
4951
查看次数

如何同步整数数组的单个元素?

如果我想锁定整个数组,我可以使用这样的synchronized关键字:

int arr[];

synchronized void inc(int a, int b){
    arr[a]=arr[a]+b;
}
Run Code Online (Sandbox Code Playgroud)

但是我可以只锁定项目,arr[a]以便其他线程仍然可以同时读取/写入数组的其他项目吗?

java arrays synchronized

3
推荐指数
1
解决办法
2483
查看次数

模拟功能不返回预期值

我有一个静态方法

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#中.

c# vb.net unit-testing moq

2
推荐指数
1
解决办法
470
查看次数

标签 统计

unit-testing ×3

c# ×2

moq ×2

arrays ×1

entity-framework ×1

java ×1

lambda ×1

synchronized ×1

vb.net ×1