我正在同一个解决方案文件中的单独项目(项目B)中为我的项目(项目A)设置单元测试。我的问题是我无法访问所有存储库中的任何方法进行测试。我已经在项目B中为项目A的存储库设置了参考,我能够在项目B中实例化任何存储库。我只是无法访问其接口提供的任何方法。
这是我的一个实体的类,接口和存储库的示例。所有其他实体都遵循相同的架构模式。
类别:
public class MyConfiguration
{
public virtual int Id { get; protected set; }
public virtual string DefaultLocation { get; set; }
public virtual string FolderLocalPath { get; set; }
public virtual string DefaultPrinter { get; set; }
public virtual int DefaultPrinterLabelAmount { get; set; }
public virtual string DefaultCompanyName { get; set; }
public virtual bool CompanyNameEnabled { get; set; }
public virtual bool TimestampLabelEnabled { get; set; }
public virtual bool CollectionFeeEnabled { get; set; }
}
接口:
interface IMyConfigurationRepository
{
void CreateConfig(MyConfiguration config);
void UpdateConfig(MyConfiguration config);
MyConfiguration GetConfig();
}
存储库:
public class MyConfigurationRepository : IMyConfigurationRepository
{
void IMyConfigurationRepository.CreateConfig(MyConfiguration config)
{
throw new NotImplementedException();
}
void IMyConfigurationRepository.UpdateConfig(MyConfiguration config)
{
throw new NotImplementedException();
}
MyConfiguration IMyConfigurationRepository.GetConfig()
{
throw new NotImplementedException();
}
}
我想我的问题是,我正在进行接口实现吗?
答案 0 :(得分:2)
您正在使用“显式”实施形式。
这意味着您确实无法在Repsoitory的实例上调用方法。您需要将其强制转换为界面:
var repo = new MyConfigurationRepository ();
var gate = (IMyConfigurationRepository) repo;
repo.CreateConfig(...); // won't compile
gate.CreateConfig(...); // OK
如果您想要的话,这取决于您的其他架构。另一种方法是隐式实现:
public class MyConfigurationRepository : IMyConfigurationRepository
{
//void IMyConfigurationRepository.CreateConfig(MyConfiguration config)
public void CreateConfig(MyConfiguration config)
{
throw new NotImplementedException();
}
...
}