Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.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
C# 使用最小起订量改变参数_C#_Visual Studio_Moq_Mstest - Fatal编程技术网

C# 使用最小起订量改变参数

C# 使用最小起订量改变参数,c#,visual-studio,moq,mstest,C#,Visual Studio,Moq,Mstest,我有一个单元测试的方法(GetEnterpriseInfo),它从类AssetInfo管理器调用另一个方法(GetAssetInfo) private EnterpriseInfo GetEnterpriseInfo() { //some code //assetInfoManager is a public property, deviceManager and enterprise are local variables assetInfoManager.GetAs

我有一个单元测试的方法(
GetEnterpriseInfo
),它从类
AssetInfo管理器
调用另一个方法(
GetAssetInfo

private EnterpriseInfo GetEnterpriseInfo()
{
    //some code
    //assetInfoManager is a public property,  deviceManager and enterprise are local variables
    assetInfoManager.GetAssetInfo(deviceManager, enterprise);
    //some code
}
我想测试这个方法,所以我模拟了
AssetInfoManager
,但我需要根据模拟更改参数
deviceManager
。我使用了
Callback
<代码>\u mockAssetInfoManager是上述代码中属性
assetInfoManager
的模拟

_mockAssetInfoManager.Setup(x => x.GetAssetInfo(It.IsAny<IDeviceManager>(), It.IsAny<EnterpriseInfo>()))
    .Callback((IDeviceManager deviceManager, EnterpriseInfo enterpriseInfo) =>
    {
        //_deviceManagerGlobal is private global variable
        _deviceManagerGlobal= new DeviceManager
        {
            DeviceName = "Test Device"
        };

        deviceManager = _deviceManagerGlobal;
    })
    .Returns(_assetInfoList); //_assetInfoList is private global variable

我的要求是在
回调
中将其更改为模拟值。是否可能?

使用回调来填充传递到模拟中的参数的所需成员

_mockAssetInfoManager
    .Setup(x => x.GetAssetInfo(It.IsAny<IDeviceManager>(), It.IsAny<EnterpriseInfo>()))
    .Callback((IDeviceManager deviceManager, EnterpriseInfo enterpriseInfo) => {
        deviceManager.DeviceName = "Test Device";   
    })
    .Returns(_assetInfoList); //_assetInfoList is private global variable
\u mockAssetInfoManager
.Setup(x=>x.GetAssetInfo(It.IsAny(),It.IsAny())
.Callback((IDeviceManager设备管理器,EnterpriseInfo EnterpriseInfo)=>{
deviceManager.DeviceName=“测试设备”;
})
.返回(_assetInfoList)//_assetInfoList是私有全局变量

即使在实际代码中,分配一个新变量也不会执行您试图执行的操作。

设备管理器是在被测对象内注入还是创建的?未知变量太多,无法更好地理解实际问题。如果你能用a重新格式化这个问题,那就太棒了,这样我们就可以更清楚地了解当前的问题以及你到底想做什么?@Nkosi谢谢你的评论,我已经用一些变量的信息更新了这个问题。使用回调来填充传递到模拟中的参数的所需成员。即使在实际的代码中,分配一个新变量也不会执行您试图执行的操作。@lmad如果您模拟了
GetAssetInfo
,那么它的调用参数是什么又有什么关系呢?@PeterCsala实际上这是一个在代码中更改的引用变量。我需要那个更新的值。得到了答案,多亏了汉克斯,它成功了。我们需要给同一个对象赋值,而不是创建新的:)基本引用变量behavior。
_mockAssetInfoManager
    .Setup(x => x.GetAssetInfo(It.IsAny<IDeviceManager>(), It.IsAny<EnterpriseInfo>()))
    .Callback((IDeviceManager deviceManager, EnterpriseInfo enterpriseInfo) => {
        deviceManager.DeviceName = "Test Device";   
    })
    .Returns(_assetInfoList); //_assetInfoList is private global variable