我正在为一个项目的客户工作,现有的代码/测试正在使用MS Fakes库和Shims来隔离测试等...
我在试用版上安装了VS 2015企业版,一切都很好.通过我的MSDN订阅,我接受了VS 2015 Professional,现在测试没有运行,失败了:
Failed to resolve profiler path from COR_PROFILER_PATH and COR_PROFILER environment variables.
at Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.IntelliTraceInstrumentationProvider.ResolveProfilerPath()
at Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.IntelliTraceInstrumentationProvider.Initialize()
at Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.UnitTestIsolationRuntime.InitializeUnitTestIsolationInstrumentationProvider()
at Microsoft.QualityTools.Testing.Fakes.Shims.ShimRuntime.CreateContext()
at Microsoft.QualityTools.Testing.Fakes.ShimsContext.Create()
Run Code Online (Sandbox Code Playgroud)
看着垫片试图使用Intellitrace,VS2015没有给我.除了购买VS的企业版之外,任何人都知道这个方法吗?
在为我们的应用程序编写一些单元测试时,我偶然发现了EF6中的一些奇怪行为(使用6.1和6.1.2测试):显然,在同一应用程序上下文中重复创建和删除数据库(相同名称/相同连接字符串)是不可能的.
测试设置:
public class A
{
public int Id { get; set; }
public string Name { get; set; }
}
class AMap : EntityTypeConfiguration<A>
{
public AMap()
{
HasKey(a => a.Id);
Property(a => a.Name).IsRequired().IsMaxLength().HasColumnName("Name");
Property(a => a.Id).HasColumnName("ID");
}
}
public class SomeContext : DbContext
{
public SomeContext(DbConnection connection, bool ownsConnection) : base(connection, ownsConnection)
{
}
public DbSet<A> As { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Configurations.Add(new AMap());
}
}
[TestFixture]
public class BasicTest
{
private …Run Code Online (Sandbox Code Playgroud) 我正在使用EF 4并尝试使用Moq对以下行进行单元测试:
var convertError = models
.Where(x => SqlFunctions.StringConvert((decimal?) (x.convert ?? 0)) == "0")
.Any();
Run Code Online (Sandbox Code Playgroud)
SqlFunctions.StringConvert()如果它检测到上下文被模拟,它似乎会抛出.
它给出了一个错误说:
只能从LINQ到实体调用此函数
是否有可能告诉SqlFunctions.StringConvert返回一个模拟对象,以便我可以摆脱这个错误?