Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 存根和模拟实现_.net_Mocking_Stub - Fatal编程技术网

.net 存根和模拟实现

.net 存根和模拟实现,.net,mocking,stub,.net,Mocking,Stub,可能重复: 我使用的是单元测试的模拟,但在实现代码中我无法区分模拟和存根。。 模拟实现代码是:- [TestFixture] public class MockUser { [Test] public void SaveValidUserFileNameUsingMock() { UserMock um = new UserMock(); um.uName = "";

可能重复:

我使用的是单元测试的模拟,但在实现代码中我无法区分模拟和存根。。 模拟实现代码是:-

[TestFixture]
    public class MockUser
    {
        [Test]
        public void SaveValidUserFileNameUsingMock()
        {
            UserMock um = new UserMock();
            um.uName = "";
            um.fName = "sfs.jpg";
            um.ContentType = "image/jpg";
            IUser usr = um;
            Assert.AreEqual("E:/image/kawade.jpg", usr.Save(um));
        }
    }

    public class UserMock : IUser
    {
        public string uName;
        public string fName;
        public string ContentType;

        public string Save(IUser u)
        {
            if (uName == "" || fName == "")
            {
                throw new ArgumentException("missing field name");
            }

            if (ContentType.Contains("image"))
            {
                string ext = Path.GetExtension(fName);
                return (string.Format("E:/image/{0}", this.uName + ext));
            }
            return "invalid";
        }
    }


        public interface IUser
        {
            string Save(IUser u);
        }
[TestFixture]
    public class UserTest
    {
        [Test]
        public void SaveUserValidFile()
        {
            UserStub su = new UserStub();
            su.uName = "kawade";
            su.fileName = "sfgs.png";
            su.Contenttype = "image/x-png";
            su.pName = "sdskjh";
            IUser target = su;

        }
    }

    internal class UserStub : IUser
    {
        public string uName;
        public string pName;
        public string Contenttype;
        public string fileName;


        public string Save(IUser u)
        {
            if (uName == null || pName == null)
            {
                throw new ArgumentException("user_name or pic_name is required");
            }

            if (Contenttype.Contains("image"))
            {
                string ext = Path.GetExtension(fileName);
                //return string.Format("C:/test/{0}", this.uName + ext);
                Assert.AreEqual("C:/Test/kawade.png", target.Save(su));
            }
            return "";
        }
    }

    public  interface IUser
    {
        string Save(IUser u);
    }
要测试的类别是:-

public class User
    {
        public string uName;
        public string fName;
        //private IUser usr;

        public void Save(FileUpload fu, User usr)
        {
            if (uName == null || fName == null)
            {
                throw new ArgumentException("missing field name");
            }

            if (fu.PostedFile.ContentType.Contains("image"))
            {
                string ext = Path.GetExtension(fName);
                fu.SaveAs(string.Format("E:/image{0}", this.fName + ext));
            }
        }
同一个类被用于存根测试。存根测试代码为:-

[TestFixture]
    public class MockUser
    {
        [Test]
        public void SaveValidUserFileNameUsingMock()
        {
            UserMock um = new UserMock();
            um.uName = "";
            um.fName = "sfs.jpg";
            um.ContentType = "image/jpg";
            IUser usr = um;
            Assert.AreEqual("E:/image/kawade.jpg", usr.Save(um));
        }
    }

    public class UserMock : IUser
    {
        public string uName;
        public string fName;
        public string ContentType;

        public string Save(IUser u)
        {
            if (uName == "" || fName == "")
            {
                throw new ArgumentException("missing field name");
            }

            if (ContentType.Contains("image"))
            {
                string ext = Path.GetExtension(fName);
                return (string.Format("E:/image/{0}", this.uName + ext));
            }
            return "invalid";
        }
    }


        public interface IUser
        {
            string Save(IUser u);
        }
[TestFixture]
    public class UserTest
    {
        [Test]
        public void SaveUserValidFile()
        {
            UserStub su = new UserStub();
            su.uName = "kawade";
            su.fileName = "sfgs.png";
            su.Contenttype = "image/x-png";
            su.pName = "sdskjh";
            IUser target = su;

        }
    }

    internal class UserStub : IUser
    {
        public string uName;
        public string pName;
        public string Contenttype;
        public string fileName;


        public string Save(IUser u)
        {
            if (uName == null || pName == null)
            {
                throw new ArgumentException("user_name or pic_name is required");
            }

            if (Contenttype.Contains("image"))
            {
                string ext = Path.GetExtension(fileName);
                //return string.Format("C:/test/{0}", this.uName + ext);
                Assert.AreEqual("C:/Test/kawade.png", target.Save(su));
            }
            return "";
        }
    }

    public  interface IUser
    {
        string Save(IUser u);
    }

请有人告诉我存根和mock之间的区别,以及上面代码中的实现。

存根:给你一个股票答案的东西,或者最多,属性包行为,或者只返回void的方法

Fake:提供分段行为的东西,以便您可以人为地测试该类客户机的一些场景

模拟:可以编程的东西,在它被调用的不同时间给出不同的响应。它将让您控制是否要检查调用的顺序。大多数模拟框架也提供了存根功能


上述每种方法的部分变体:通过一个伪方法,可以包装一个存根、另一个伪方法、模拟方法或真实实现,并仅对特定参数执行某些操作

@Mitch Wheat:你是否搜索他与此无关。(几乎)只要谷歌搜索足够长的时间,什么都可以找到。回答问题或将其作为副本关闭。我们确实想在这里提问,并成为编程问题的第一个站点,不是吗?@jgauffin:我花了5秒钟。比海报上写问题所需的时间要短得多。顺便说一句,我投票决定以傻瓜的身份结束。“我建议你也这么做。”米奇·麦特:我想,如果你能在5秒钟内找到它,那没关系。所有的编程问题都应该受到欢迎,即使它们在谷歌很容易找到。我现在投票决定结束这个问题。@jgauffin:我不同意。如果你能在5秒钟内找到一个已有的答案,那就去找它。@Mitch Wheat:Read at meta: