????4???????????????????????????α????
????4.1????????????
?????????????????????????????????????α???????
????????????????????????????????
????????????
????public class UserBll
????{
????private readonly IUser _user;
????public UserBll(IUser user)
????{
????this._user = user;
????}
????public bool IsExistUser(string userId)
????{
????return _user.IsExist(userId);
????}
????}
???????????
????[Test]
????public void IsExistUser_ExistUser_ReturnsTrue()
????{
????var fackUser = new FackUser {WillBevalid = true};
????var user = new UserBll(fackUser);//???α????
????bool result = user.IsExistUser("1");
????Assert.IsTrue(result);
????}
??????????????????????ù?????????????????????????????????????????????????????????????????????????????????????????????????
??????ó?????????api????????Щ????????????в????????????????????????
????4.2??????????get??set?????α????
????????????
????public class UserBll
????{
????public IUser User { get; set; }
????public UserBll(IUser user)
????{
????User = new User();//??????????????????
????}
????public bool IsExistUser(string userId)
????{
????return User.IsExist(userId);
????}
????}
???????????
????[Test]
????public void IsGetName_NormalGetName_ReturnsTrue() {
????var fackUser = new FackUser { WillBevalid = true };
????var user = new UserBll { User = fackUser };//???????
????bool result = user.IsExistUser("1");
????Assert.IsTrue(result);
????}
???????????????????????????????????????????????д??
????????????????????????????????????????????????????????????????????????????????????????????????
????4.3?????????α??????????α????
?????????????????
????public class UserFactory
????{
????private  IUser _user = null;
????public  IUser Create()
????{
????if (_user != null)
????return _user;
????return new User();
????}
????[Conditional("DEBUG")]
????public  void SetUser(IUser muser)
????{
????_user = muser;
????}
????}
????????????
????public class UserBll
????{
????public bool IsExistUser(string userId)
????{
????var userFactory = new UserFactory();
????return userFactory.Create().IsExist(userId);
????}
???????????
????[Test]
????public void IsGetName_NormalGetName_ReturnsTrue() {
????var fackUser = new FackUser { WillBevalid = true };
????var userFactory = new UserFactory();
????userFactory.SetUser(fackUser);//????????????α????
????bool result = new UserBll().IsExistUser("1");
????Assert.IsTrue(result);
????}
????????α????????? ???????????????????????????????α???????????????????????л????????
????????????????????á??????????????????????????????????????Щ??????????
????4.4?????????д
??????????????????裺
?????????????
???????????????????????鶴?????????
???????????????????ù???????
?????????????У?
???????????????
????????????????б???????
???????????????滻??????????????Σ???????????
??????д?鷽??
??????????????
?????????????У?
?????????????????????????????????????
????????????????????????????
????α?????????????
????public class UserBll
????{
????public bool IsExistUser(string userId)
????{            var user = UserManager();
????return user.IsExist(userId);
????}
????protected virtual IUser UserManager()
????{
????return new User();
????}
???????????????????????
????public class TestUser : UserBll
????{
????public TestUser(IUser user) {
????_muser = user;
????}
????private readonly IUser _muser;
????protected override IUser UserManager() {
????return _muser;
????}
????}
???????????
????[Test]
????public void IsGetName_NormalGetName_ReturnsTrue() {
????var fackUser = new FackUser { WillBevalid = true };//??????
????var testUser = new TestUser(fackUser);//???α??????????????
????bool result = testUser.IsExistUser("1");
????Assert.IsTrue(result);
????}
??????????????д???????д??????????????????滻??????????????????????????·???????????????????????????????????????????????????滻????????????????????
????????????????????????????????????????????????????????á?
????4.5?????????????
???????????????
????public class UserBll
????{
????public bool IsExistUser(string userId)
????{
????return UserManager(userId);
????}
????protected virtual bool UserManager(string userId)
????{
????IUser user = new User();
????return user.IsExist(userId);
????}
????}
???????????????????????
????public class TestUser : UserBll
????{
????public bool IsSupported;
????protected bool IsGetUserName(string userId) {
????return IsSupported;
????}
????}
??????????
????public void IsGetName_NormalGetName_ReturnsTrue() {
????var testUser = new TestUser { IsSupported = true };
????bool result = testUser.IsExistUser("1");
????Assert.IsTrue(result);
????}
???????????????????????????????????????????????????????????????????????????÷????????????????????????????????е????????????????????????????
????????????????????á???????ú???????????