痣:使密封的内部类可见

时间:2013-06-24 11:17:11

标签: visual-studio-2010 unit-testing mstest moles

我需要帮助,因为我对鼹鼠很新,我有以下代码:

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中看到它

1 个答案:

答案 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");

}

}
}