Unit testing 如何在C#Microsoft fakes单元测试中使用垫片类获取和设置对象的值?
这是我想测试的主要课程。它包含一个私有方法Unit testing 如何在C#Microsoft fakes单元测试中使用垫片类获取和设置对象的值?,unit-testing,microsoft-fakes,shim,Unit Testing,Microsoft Fakes,Shim,这是我想测试的主要课程。它包含一个私有方法 Public class MyClass { private bool IsWorkDone(MyItem item, string name) { using (MyThing thingObj = new MyThing(item.ID)) { using (MyWork workObj = thingObj.Open()) {
Public class MyClass
{
private bool IsWorkDone(MyItem item, string name)
{
using (MyThing thingObj = new MyThing(item.ID))
{
using (MyWork workObj = thingObj.Open())
{
try
{
return false;
}
}
}
return true;
}
}
在我的测试课上,我写了下面的方法
public void CheckIsWorkDoneTest()
{
using (ShimsContext.Create())
{
MyItem myitem = new ShimMyItem () {
itemGet = () => new ShimMyItem ()
{
IDGet = () => new Guid();
}
};
ShimMyClass.AllInstances.isWorkDoneItemString = (MyClass, MyItem, MyName) => "Here I'm stuck. I need help from stackoverflow users"
PrivateObject objMyClass = new PrivateObject(typeof(MyClass));
object[] parameters = new object[2] { myItem, workName };
bool result = Convert.ToBoolean(objMyClass.Invoke("IsWorkDone", parameters));
Assert.AreEqual(result,true);
}
我想从MyClass主类中的语句=>“using(MyThing thingObj=new MyThing(item.ID))”设置oSite对象的值。
调试时,此行抛出对象引用未设置为实例错误
因此,使用ShimMyClass.Allinstance如何获取或设置它的值?您有很多不一致之处,因此您的问题可能只是将它们排除在外。如果您认为实际代码更加一致,请更新您的帖子。主要的事情
- 显示私有方法IsComplete,但从Invoke方法调用isWorkflowCompleted
- 您可能会调用您的shimmed方法,该方法将传递“我被卡住了”,并尝试将该字符串转换为布尔值
我伪造了你的骨架,并在调整了一些名称后让我的骨架开始工作。我在测试方法中使用了以下代码解决了这个问题:很高兴听到你让它工作了。取得一些进步总是感觉很好。