无法读取HostType上的ConfigurationManager.AppSettings(“Moles”)

时间:2011-10-28 06:33:29

标签: unit-testing mstest moles pex-and-moles

如果HostType为Moles,那么我无法通过ConfigurationManager.AppSettings获取数据

它在2-3个月前对我的工作很好。但它没有用,我的所有测试用例都失败了(提出了空引用异常)。

请帮我解决。感谢。

Related thread raised in MSDN also

1 个答案:

答案 0 :(得分:0)

这是.Net 4.0中当前版本的Moles中的一个已知错误 - 您可以将配置管理器鼹鼠并让它返回您想要的值作为解决方法。

例如,这是我为Linq To SQL DataContext设置测试以获取默认构造函数的代码覆盖而不连接SQL的方法。

[TestInitialize]
[HostType("Moles")]
public void Setup()
{
    MCodesConfigurationHelper.DataAccessSettingsGet = () =>
    {
        MCodesDataAccessSettings setting = new MCodesDataAccessSettings();
        setting.DatabaseConnectionStringGet = () => { return "this is a connection string."; };
        return setting;
    };

    MConfigurationManager.ConnectionStringsGet = () =>
    {
        MConnectionStringSettingsCollection strings = new MConnectionStringSettingsCollection();
        strings.ItemGetString = (string connectionString) =>
        {
            var cstring = new MConnectionStringSettings();
            cstring.ToString = () => { return connectionString; };
            cstring.ConnectionStringGet = () => { return connectionString; };
            return cstring;
        };
        return strings;
    };
    MDataContext.ConstructorString = (DataContext dataContext, string connection) => { };
}


[TestMethod]
[HostType("Moles")]
public void DefaultConstructorTest()
{
    using (MyDataContext target = new MyDataContext())
    {
        Assert.IsNotNull(target);
    }
}