Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 使用moq在xunit中更新操作_.net_Asp.net Core_Moq_Xunit.net - Fatal编程技术网

.net 使用moq在xunit中更新操作

.net 使用moq在xunit中更新操作,.net,asp.net-core,moq,xunit.net,.net,Asp.net Core,Moq,Xunit.net,我试图使用xunit和moq存储库进行更新,但我的代码没有更新更改。我不确定我写的更新代码是否正确。你能帮我做同样的吗 [Fact] private async void SetPortfolioCompanyStatusAsync() { int _id = 1; var mockUserRepository = new Mock<IPortfolioCompanyManagement>(); var mockUserRepository1 = new Mo

我试图使用xunit和moq存储库进行更新,但我的代码没有更新更改。我不确定我写的更新代码是否正确。你能帮我做同样的吗

[Fact]
private async void SetPortfolioCompanyStatusAsync()
{
    int _id = 1;
    var mockUserRepository = new Mock<IPortfolioCompanyManagement>();
    var mockUserRepository1 = new Mock<IUserManagement>();

    mockUserRepository.Setup(c => c.GetPortfolioCompanies( It.IsAny<CancellationToken>())).Returns(Task.FromResult(moqData.portfolioCompanies));
    mockUserRepository.Setup(m => m.UpdatePortfolioCompany(moqData.portfolioCompanies[0], It.IsAny<CancellationToken>())).ReturnsAsync(moqData.portfolioCompanies[0]);

    PortfolioCompany product = new PortfolioCompany()
    {
        Id = 1,
        Name = "Test Private Company 1",//change data
        DealCode = "PRIV1",
        IsActive = false,
        IsPrivate = true
    };

    var controller = new UsersController(mockUserRepository1.Object, mockUserRepository.Object);
    var result1 = await controller.SetPortfolioCompanyStatus(product, It.IsAny<CancellationToken>());//this always returns null. Expected to return the updated value.

    var result =  controller.GetAllPortfolioCompanies( It.IsAny<CancellationToken>());
    var z = result.Result.Value.Count();
}
[事实]
私有异步void SetPortfolioCompanyStatusAsync()
{
int _id=1;
var mockUserRepository=new Mock();
var mockUserRepository1=new Mock();
mockUserRepository.Setup(c=>c.GetPortfolioCompanies(It.IsAny()).Returns(Task.FromResult(moqData.portfolioCompanies));
mockUserRepository.Setup(m=>m.UpdatePortfolioCompany(moqData.portfolioCompanies[0],It.IsAny()).ReturnsAsync(moqData.portfolioCompanies[0]);
PortfolioCompany产品=新PortfolioCompany()
{
Id=1,
Name=“测试私人公司1”,//更改数据
DealCode=“PRIV1”,
IsActive=false,
IsPrivate=true
};
var controller=newuserscocontroller(mockUserRepository1.Object,mockUserRepository.Object);
var result1=await controller.SetPortfolioCompanyStatus(product,It.IsAny());//这始终返回null。应返回更新后的值。
var result=controller.GetAllPortfolioCompanies(It.IsAny());
var z=result.result.Value.Count();
}
我的模拟数据如下所示:

using System;
using System.Collections.Generic;
using System.Text;
using ValuationsReporting.Models;

namespace ValuationsReporting.Tests
{
    public partial class MoqData
    {
        public List<PortfolioCompany> portfolioCompanies = new List<PortfolioCompany> {
                 new PortfolioCompany
                 {
                     Id=1,
                    Name = "Test Private Company 1",
                    DealCode = "PRIV1",
                    IsActive = true,
                    IsPrivate = true
                 },
                 new PortfolioCompany
                 {
                    Id=2,
                    Name = "Test Public Company 1",
                    DealCode = "PUBL1",
                    IsActive = true,
                    IsPrivate = false
                 },
                new PortfolioCompany
                 {
                     Id=3,
                    Name = "Test Private Company 2",
                    DealCode = "PRIV2",
                    IsActive = true,
                    IsPrivate = true
                 },
                 new PortfolioCompany
                 {
                    Id=4,
                    Name = "Test Public Company 2",
                    DealCode = "PUBL2",
                    IsActive = true,
                    IsPrivate = false
                 },
                new PortfolioCompany
                 {
                     Id=5,
                    Name = "Test Private Company 3",
                    DealCode = "PRIV3",
                    IsActive = false,
                    IsPrivate = true
                 },
                 new PortfolioCompany
                 {
                    Id=6,
                    Name = "Test Public Company 3",
                    DealCode = "PUBL3",
                    IsActive = false,
                    IsPrivate = false
                 }
            };
    }
}
使用系统;
使用System.Collections.Generic;
使用系统文本;
使用估价报告模型;
命名空间评估报告.Tests
{
公共部分类MoqData
{
公共列表组合公司=新列表{
新Portfolio公司
{
Id=1,
Name=“测试私人公司1”,
DealCode=“PRIV1”,
IsActive=true,
IsPrivate=true
},
新Portfolio公司
{
Id=2,
Name=“测试上市公司1”,
DealCode=“PUBL1”,
IsActive=true,
IsPrivate=false
},
新Portfolio公司
{
Id=3,
Name=“测试私人公司2”,
DealCode=“PRIV2”,
IsActive=true,
IsPrivate=true
},
新Portfolio公司
{
Id=4,
Name=“测试上市公司2”,
DealCode=“PUBL2”,
IsActive=true,
IsPrivate=false
},
新Portfolio公司
{
Id=5,
Name=“测试私人公司3”,
DealCode=“PRIV3”,
IsActive=false,
IsPrivate=true
},
新Portfolio公司
{
Id=6,
Name=“测试上市公司3”,
DealCode=“PUBL3”,
IsActive=false,
IsPrivate=false
}
};
}
}
我的控制器代码如下:

public async Task<ActionResult<PortfolioCompany>> SetPortfolioCompanyStatus([FromBody] PortfolioCompany portfolioCompany, CancellationToken cancellationToken = default(CancellationToken))
{
    if (portfolioCompany == null)
        throw new ArgumentNullException(nameof(portfolioCompany));

    if (portfolioCompany.Id <= 0)
        throw new ArgumentOutOfRangeException(nameof(portfolioCompany.Id));
    var z = await _portfolioCompanyManagement.UpdatePortfolioCompany(portfolioCompany, cancellationToken);
    return await _portfolioCompanyManagement.UpdatePortfolioCompany(portfolioCompany, cancellationToken);
}
公共异步任务SetPortfolioCompanyStatus([FromBody]PortfolioCompany PortfolioCompany,CancellationToken CancellationToken=default(CancellationToken))
{
如果(portfolioCompany==null)
抛出新ArgumentNullException(nameof(portfolioCompany));

如果(portfolioCompany.Id)需要任何澄清,请让我知道问题在于
UpdatePortfolioCompany
的设置。Moq使用equals方法检查标识,您使用一个实例设置方法,然后使用另一个实例调用它,我想这两个实例不相等……我的意思是
moqData.PortfolioCompanys[0]
产品
(我确实希望
PortfolioCompany
不会覆盖Equals方法或实现IEquatable…)@johnny感谢您的回复。那么您认为我可以如何解决这个问题?请看产品是我在这里创建的一个列表,只是为了更新值。Moqdata.PortfolioCompanys[0]这也是一个列表,您可以在顶部看到我有6条记录。您能帮我解决这个问题吗?有很多方法可以解决它,关键是要理解它。例如,尝试使用
moqData.portfolioCompanies[0]
而不是
产品
@johnny那么我将如何发送必须更新的数据。因此,基本上在本例中,我更新的是isactive,这是真到假