首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Fakes: Downcast SqlConnection to DbConnection

Fakes: Downcast SqlConnection to DbConnection
EN

Stack Overflow用户
提问于 2017-10-13 00:58:32
回答 1查看 301关注 0票数 1

我怎么才能让这个假货起作用呢?我希望最后一个断言能通过。

System.Data.fakes

代码语言:javascript
复制
<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/">
  <Assembly Name="System.Data" Version="4.0.0.0"/>
</Fakes>

Test.cs

代码语言:javascript
复制
using System.Data.Common;
using System.Data.SqlClient;
using System.Data.SqlClient.Fakes;
using Microsoft.QualityTools.Testing.Fakes;
using Microsoft.VisualStudio.TestTools.UnitTesting;

[TestClass]
public class FakeTest
{
    [TestMethod]
    public void DownCast()
    {
        using (ShimsContext.Create())
        { 
            SqlConnection sqlCn = new ShimSqlConnection 
            { 
                CreateCommand = () => new ShimSqlCommand(), 
                CreateDbCommand = () => new ShimSqlCommand() 
            };

            Assert.IsNotNull(sqlCn.CreateCommand());

            DbConnection dbCn = sqlCn;

            Assert.IsNotNull(dbCn.CreateCommand()); // How can I make this pass?
        }
    }
}
EN

回答 1

Stack Overflow用户

发布于 2017-10-13 01:45:45

在初始设置之后添加new ShimDbConnection(sqlCn) { CreateCommand = () => new ShimSqlCommand() };行将允许测试通过。

代码语言:javascript
复制
using System.Data.Common;
using System.Data.Common.Fakes;
using System.Data.SqlClient;
using System.Data.SqlClient.Fakes;
using Microsoft.QualityTools.Testing.Fakes;
using Microsoft.VisualStudio.TestTools.UnitTesting;

[TestClass]
public class FakeTest
{
    [TestMethod]
    public void DownCast()
    {
        using (ShimsContext.Create())
        {
            SqlConnection sqlCn = new ShimSqlConnection
            {
                CreateCommand = () => new ShimSqlCommand(),
                CreateDbCommand = () => new ShimSqlCommand()
            };
            new ShimDbConnection(sqlCn) { CreateCommand = () => new ShimSqlCommand() }; // Adding this line, the test passes.

            Assert.IsNotNull(sqlCn.CreateCommand());

            DbConnection dbCn = sqlCn;

            Assert.IsNotNull(dbCn.CreateCommand());
        }
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46715121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档