有没有办法在单元测试中使用模拟或假货而无需使用依赖注入或反转或控制?
我发现这种语法可以与TypeMock Isolator(http://learn.typemock.com/)一起使用.虽然它是一个商业产品,所以我希望其他框架(例如RhinoMocks)会在某个阶段引入这样的语法.
/// Can mock objects WITHOUT DEPENDENCY INJECTION.
var hand = Isolate.Fake.Instance<Hand>();
var mouth = Isolate.Fake.Instance<Mouth>();
Isolate.Swap.NextInstance<Hand>().With(hand);
Isolate.Swap.NextInstance<Mouth>().With(mouth);
...
//notice we're not passing the mocked objects in.
var brain = new Brain();
brain.TouchIron(iron);
...
Run Code Online (Sandbox Code Playgroud)
这对我这种语法非常有吸引力,这一切都是自动发生的.我们可以在那里创建一个没有传递必需依赖项的大脑,并且模拟框架将自动替换依赖项用于模拟对象.任何身体在其他地方看到过这种类型的东西?
大脑类构造函数现在使用上面的语法,
public Brain()
{
_hand = new Hand();
_mouth = new Mouth();
}
Run Code Online (Sandbox Code Playgroud)
依赖注入示例看起来像这样,
public Brain(IHand hand, IMouth mouth)
{
_hand = hand;
_mouth = mouth;
}
Run Code Online (Sandbox Code Playgroud)
谢谢.
我熟悉C#SqlBulkCopy类,您可以在其中调用通过DataTable传递的'WriteToServer'方法.
我的问题是SQL服务器中的底层机制用于批量插入数据?
我问的原因是批量插入 MSDN T-SQL帮助文件中引用的批量插入需要导入数据文件.SqlBulkCopy是否创建数据文件?
我想了解这些东西,以确定我是否可以在SQL中使用批量插入功能.
如果我编写一个SQL语句,准备将所有行插入特定表(数千行),我可以将它们批量插入到目标表中吗?这样的事情就是我现在这样做的方式,
INSERT INTO sync_filters (table_name, device_id, road_id, contract_id)
SELECT * FROM dbo.sync_contract_filters (@device_id)
Run Code Online (Sandbox Code Playgroud)
dbo.sync_contract_filters是一个生成要插入的所有行的函数.这可以批量插入吗?
indexedDB有一个规范说您可以同步访问索引数据库,但尚未实现.
我只是想知道是否有办法让它手动同步,
我的JavaScript看起来像这样,
var trans = databaseAsync.transaction(["mapTile"], IDBTransaction.READ_WRITE);
var store = trans.objectStore("mapTile");
var keyRange = IDBKeyRange.bound(evt.data[0], evt.data[0]);
var cursorRequest = store.openCursor(keyRange);
// can you put some kind of wait in here?
cursorRequest.onsuccess = function(e)
{
var result = e.target.result;
if(!!result == false)
{
}
}
Run Code Online (Sandbox Code Playgroud)
那么你可以在那里放一些东西让它等到onsuccess方法被调用后再继续吗?
我想这样做的原因是上面的代码包含在这个方法中,
dojo.extend(esri.layers.ArcGISTiledMapServiceLayer, {
getTileUrl : function(level, row, col)
{
// blah
return url;
}
Run Code Online (Sandbox Code Playgroud)
所以它是一个ESRI图块层(它会将图块加载到我的网页上的地图上),并且该方法需要立即返回特定图块的网址.它将是一个加载图像的URL,如果它没有缓存在数据库中,或者这个,
data:image;base64,*BASE64DATA*
Run Code Online (Sandbox Code Playgroud)
其中BASE64DATA是以前缓存的数据库中的数据.
我之前使用的是localStorage,它同步工作,但是有5MB的限制,所以我想我会尝试使用indexedDB.
对于我的项目,我在eclipse中有这样的文件夹结构,
Application
-- assets
-- www
-- phonegap.js
-- res
-- xml
-- phonegap.xml
Run Code Online (Sandbox Code Playgroud)
问题是phonegap.js文件已复制到磁盘上,但不在项目中.此外,xml文件夹已复制到磁盘上,但未复制到项目中.
如何将这些导入到项目中?在VS中你可以去'添加 - >现有项'
我试图'导入 - >常规 - >文件系统'但这似乎添加了一个链接到我的文件/文件夹,就好像它不在项目中.
如何编写C#代码来编译和运行动态生成的C#代码.周围有例子吗?
我所追求的是动态构建一个C#类(或类)并在运行时运行它们.我希望生成的类与其他非动态的C#类进行交互.
我见过生成exe或dll文件的例子.我不是在那之后,我只是想让它在内存中编译一些C#代码然后运行它.例如,
所以这里有一个非动态的类,它将在我的C#程序集中定义,并且只会在编译时更改,
public class NotDynamicClass
{
private readonly List<string> values = new List<string>();
public void AddValue(string value)
{
values.Add(value);
}
public void ProcessValues()
{
// do some other stuff with values
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的动态类.我的C#代码将生成此类并运行它,
public class DynamicClass
{
public static void Main()
{
NotDynamicClass class = new NotDynamicClass();
class.AddValue("One");
class.AddValue("two");
}
}
Run Code Online (Sandbox Code Playgroud)
结果是,最后我的非动态代码将调用ProcessValues,它会做一些其他的事情.动态代码的要点是允许我们或客户端向软件添加自定义逻辑.
谢谢.
我已经使用应用程序snoop来调试WPF应用程序.
它有助于在运行时分解XAML并理解GUI层次结构,并查找绑定错误等.
Silverlight有什么类似的吗?
我有这个代码,
private bool MatchingBreak(IEnumerable<CarriagewaySummary> breaks, int startMetres, int divisionPosition)
{
CarriagewaySummary matchingBreak = breaks.Where(x =>
{
return x.StartMetres == startMetres && x.EndMetres == divisionPosition;
}).SingleOrDefault();
return matchingBreak != null;
}
Run Code Online (Sandbox Code Playgroud)
为什么在MSIL中生成一个名为<> c__DisplayClass1的嵌套类?
.class nested private auto ansi sealed beforefieldinit <>c__DisplayClass1
extends object
{
.custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = (
01 00 00 00
)
// Fields
.field public int32 startMetres
.field public int32 divisionPosition
// Methods
.method public hidebysig specialname rtspecialname
instance void .ctor () cil managed
{
// Method …Run Code Online (Sandbox Code Playgroud) 有人可以指点我使用SQL CE进行SQL 2008 R2复制的演示或演练.
我们的想法是让客户端每天连接到我们的服务器并复制/同步他们的数据.
谢谢.
我正在使用git to subversion bridge来检查一个subversion存储库.最初我使用这个命令,
get svn clone -s svn://repositoryName/etc
Run Code Online (Sandbox Code Playgroud)
但我们的颠覆存储库是庞大的,多年的开发,许多分支等.
结果是进程经常死亡,当它压缩存储库时,内存使用量超过1.5 GB,并且它就会死掉.
所以我想也许我会尝试检查后备箱,因为这是我将要使用的主要内容.所以我试过这个,
get svn clone -trunk svn://repositoryName/etc
Run Code Online (Sandbox Code Playgroud)
但我得到一个错误,在模式匹配中使用未初始化的值.
有人可以告诉我正确的命令只用于检查主干.还有一个已知的错误/内存泄漏?我在Windows上使用Git版本1.7.3.1-preview20201002.
有关于git和命令行选项的官方文档吗?
我们有一个相当大的silverlight 4应用程序.我们正在寻找应用程序中的内存泄漏,这已经变成了一项艰巨的任务.
对于那些看过原帖的人来说,事情已经彻底改变了!
我意识到ANTS内存分析器并没有向我展示正确的东西.那是因为内存泄漏不在托管代码中,而是在本机代码中.我确实解决了ANTS的一些问题 - 它是托管代码内存泄漏的好工具.
所以我找到了这个博客,
哪个很棒.我使用xPerf和xPerfViewer来查看本机堆,看看我怀疑是实际的内存泄漏.
所以我可以看到一个看起来像这样的堆栈跟踪,
CCoreServices::Draw
CCoreServices::Tick
CUElement::Render
CUIElement::Render
CUIElement::RenderWithTransform
CUIElement::RenderVisual
CUIElement::RenderChildren
{Repeat of the above in a recursive fashion}
Run Code Online (Sandbox Code Playgroud)
所以在这个'Render'方法的某个地方,它分配了大约520字节的内存,据我所知它并没有释放它.
我还可以看到一个叫做的方法或类
SDBitmapCreate
Run Code Online (Sandbox Code Playgroud)
也在泄漏记忆.
有意思,因为我似乎找到了什么,但我不确定是什么.
还有其他建议吗?
谢谢.
.net ×5
c# ×5
silverlight ×2
c#-4.0 ×1
dynamic ×1
eclipse ×1
git ×1
git-svn ×1
indexeddb ×1
javascript ×1
sql-server ×1
sqlbulkcopy ×1
svn ×1
unit-testing ×1