返回字符串数组的安装集成测试方法

时间:2018-03-16 13:35:14

标签: c# unit-testing lambda integration-testing moq

我有从数据库读取和返回数据的方法,现在这个方法检查返回的模型是否为null然后如果没有它并获取我想要返回的字段并在数组中返回它们,如果字符串,这里是方法

public string[] GetCustomerSecret(string publicKey)
{
    var customer = _directConnectContext.Customers.Single(c => c.PublicKey == publicKey);
    if (null != customer)
    {
        return new[] { customer.PrivateKey, customer.HttpReferer ?? string.Empty};
    }        
    return null;
}

所以我想在集成或单元测试中设置(不确定它是哪一个)方法来测试,我正在使用Mock并且我的测试到目前为止工作正常但我正在努力解决这个问题,这里是我试过的,下面的代码嘲笑客户名单

List<Customer> customerList = new List<Customer>()
{
    new Customer { 
        CustomerID = 1,
        PublicKey = "11111",
        PrivateKey = "121112A",
        PartnerName = "TestParter",
        PartnerIata = "56858VB",
        PartnerID = "67607", 
        PartnerActive = true,
        HttpReferer="RefererTest"
    }
};

然后这是我需要帮助的实际设置

customerMock
    .Setup(x => x.GetCustomerSecret(It.IsAny<string>()))
    .Returns((string publicKey) => customerList.Where(x => x.PublicKey == publicKey)).ToArray());

它给出了一个错误,即

  

“无法将lambda表达式转换为type,因为它不是a   代表“

1 个答案:

答案 0 :(得分:0)

假设目标是复制实际建议中的内容,则使用模拟设置执行类似的操作。

df = pd.merge(df1, df2, on='ITEM').query('PRICE >SELLLING_PRICE')
print (df)
     ITEM  PRICE  SELLLING_PRICE
0   MANGO    5.0             4.0
1   MANGO    5.0             3.0
3  BANANA    2.0             1.0
4  ORANGE    1.5             0.5