我需要帮助,因为我对鼹鼠很新,我有以下代码:
namespace A.BusinessLayer
{
sealed class AManager
{
void Method1(object obj){
// do something
}
}
public class B
{
void Method1(object obj){
if some thing{
AManager a=new AManager();
a.Method1();
}
}
}
}
现在我正在为上面的类创建单元测试,如下所示(想知道这是否可能): 说明:当调用B.Method1时,我只是不想检查是否从实现中调用了A.Method1,这就是我希望这段代码可以测试的。
namespace A.Tests
{
class BTest
{
void Method1Test(){
//I need something like
A.BusinessLayer.Moles.MAManager t=new A.BusinessLayer.Moles.MAManager();
t.Method1=(obj)=>{
Assert.IsTrue(true);
};
B=new B();
B.Method1();
//Assert.IsTrue(true);
}
}
}
我已将以下属性添加到A.BusinessLayer项目的AssemblyInfo类中:
[assembly: InternalsVisibleTo("A.BusinessLayer.Moles")]
[assembly: InternalsVisibleTo("A.BusinessLayer.Tests")]
问题我看不到AManger类的任何Moles?
任何有助于改善我的方法的帮助都会受到影响。
更新:我在* moles.xml文件中看到了类AManager,但是通过对象浏览器无法在A.BusinessLayer.Moles dll中看到它
答案 0 :(得分:0)
用显示器敲打头一段时间后,它终于开始工作了。这是我做的:
您需要清理测试项目,然后再次构建
希望这有助于遇到同样问题的人。
至于方法被认为我使用以下代码:
namespace A.Tests
{
class BTest
{
void Method1Test(){
bool isMethodInvoked=false;
A.BusinessLayer.Moles.MAManager.AllInstances=()=>{
isMethodInvoked=true;
};
B=new B();
B.Method1();
Assert.IsTrue(isMethodInvoked, "Method is not invoked");
}
}
}