使用FakeItEasy,我试图捕获假对象上的属性值的设置:
首先是界面:
interface ISomeInterface
{
int MyProperty {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
然后是单元测试的一个片段:
var myObject = A.Fake<ISomeInterface>();
int saved = 0;
A.CallTo (() => myObject.MyProperty).Invokes (x => saved = ?????);
SomeMethod (myObject);
Assert.That (saved, Is.EqualTo (100));
Run Code Online (Sandbox Code Playgroud)
而且有
void SomeMethod (ISomeInterface intf)
{
intf.MyProperty = 100;
}
Run Code Online (Sandbox Code Playgroud)
我不知道要替换什么?????
我正在尝试使用虚拟机环境为我们的应用程序设置自动化测试.
我想要的是类似下面的场景:
如果重要的话,我正在使用TeamCity.对于虚拟机,我们使用VirtualBox,但如果需要,我们可以对任何其他虚拟机开放.
是否有任何应用程序/套件可以管理此方案?
如果没有,那么我会自己编码,应该很容易,但唯一的部分我不确定是虚拟机的处理.
我需要做的是让VM在测试后自行关闭并恢复到之前的快照,因为我希望它在下一个测试中处于已知状态.
有什么指针吗?
使用Protobuf-Net,我发现如果没有无参数构造函数或者我可能会遗漏某些东西,似乎不可能反序列化一个类?
我不想要一些带有无参数构造函数的类.我可以使用某种属性或其他技术吗?
鉴于以下课程:
public class MyClass
{
private string _param;
public MyClass ()
{
_param = string.Empty;
}
public MyClass (string param)
{
_param = param;
}
}
Run Code Online (Sandbox Code Playgroud)
我在两种链接这些构造函数的方法之间分裂:
第一个:
public MyClass () : this (string.Empty)
{
}
public MyClass (string param)
{
_param = param;
}
Run Code Online (Sandbox Code Playgroud)
第二个:
public MyClass ()
{
_param = string.Empty;
}
public MyClass (string param) : this ()
{
_param = param;
}
Run Code Online (Sandbox Code Playgroud)
那么,从无参数构造函数链接到其他方式更好吗?
由于ProtoBuf-Net不支持序列化/反序列化多维数组,我将如何管理我的数组呢?
我一直在寻找实现一个实现IEditableObject的泛型类,以便我的一些ViewModel继承,以支持取消对ViewModel中属性的编辑.这主要用于WPF中具有"确定"和"取消"按钮的模式对话框.
我在网上找到了以下实现:
这对我来说似乎过于复杂,但我不确定我是否遗漏了他们提供的一些功能.对于一个他们不支持深拷贝,所以在我的世界中我们可以使用MemberwiseClone来执行浅拷贝.就像是:
private Item backupCopy;
private bool inEdit;
public void BeginEdit()
{
if (inEdit) return;
inEdit = true;
backupCopy = this.MemberwiseClone() as Item;
}
public void CancelEdit()
{
if (!inEdit) return;
inEdit = false;
this.Name = backupCopy.Name;
}
public void EndEdit()
{
if (!inEdit) return;
inEdit = false;
backupCopy = null;
}
Run Code Online (Sandbox Code Playgroud)
这个例子当然应该是ViewModel继承的通用抽象基类,但你明白了......
这有什么区别?除了不支持深拷贝之外,我的方法有哪些缺点?你如何修改它以支持深层复制(不确定是否有必要)?
发现这篇文章显示了比使用反射更好的实现.比我链接的其他两篇文章简单得多:
我们如何扩展它以支持深层复制?
有没有人知道分析/导航VB6源代码的工具,比如scitools的工具?
我有以下代码:
var XmlDoc = new XmlDocument();
Console.WriteLine();
Console.WriteLine(response.ReadToEnd());
Console.WriteLine();
// setup the XML namespace manager
XmlNamespaceManager mgr = new XmlNamespaceManager(XmlDoc.NameTable);
// add the relevant namespaces to the XML namespace manager
mgr.AddNamespace("ns", "http://triblue.com/SeriousPayments/");
XmlDoc.LoadXml(response.ReadToEnd());
XmlElement NodePath = (XmlElement)XmlDoc.SelectSingleNode("/ns:Response", mgr);
while (NodePath != null)
{
foreach (XmlNode Xml_Node in NodePath)
{
Console.WriteLine(Xml_Node.Name + " " + Xml_Node.InnerText);
}
}
Run Code Online (Sandbox Code Playgroud)
我正进入(状态:
根元素缺失.
在:
XmlDoc.LoadXml(response.ReadToEnd());
Run Code Online (Sandbox Code Playgroud)
我的XML看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<Response xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://triblue.com/SeriousPayments/">
<Result>0</Result>
<Message>Pending</Message>
<PNRef>230828</PNRef>
<ExtData>InvNum=786</ExtData>
</Response>
Run Code Online (Sandbox Code Playgroud)
我迷路了.有人能告诉我我做错了什么吗?我知道我之前有这个工作,所以我不确定我搞砸了什么.
一如既往,谢谢!
*得到答案后我编辑的原因**
我需要改变这条线: …
设置:
class Item
{
private int _value;
public Item()
{
_value = 0;
}
public int Value { get { return _value; } set { _value = value; } }
}
class ItemCollection : Collection<Item>
{
private string _name;
public ItemCollection()
{
_name = string.Empty;
}
public string Name { get {return _name;} set {_name = value;} }
}
Run Code Online (Sandbox Code Playgroud)
现在,尝试使用以下代码片段进行序列化:
ItemCollection items = new ItemCollection();
...
XmlSerializer serializer = new XmlSerializer(typeof(ItemCollection));
using (FileStream f = File.Create(fileName))
serializer.Serialize(f, items);
Run Code Online (Sandbox Code Playgroud)
查看生成的XML后,我看到ItemCollection.Name值不存在!
我认为可能发生的事情是序列化程序将ItemCollection类型视为一个简单的Collection,因此忽略了任何其他添加的属性...... …
我有一节课:
public class Filter
{
public Filter (string name, string value)
{
Name = name;
Value = value;
}
public string Name {get; private set;}
public string Value {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
还有一个集合类:
public class FilterCollection : Collection<Filter>
{
// code elided
}
Run Code Online (Sandbox Code Playgroud)
我的组件类:
public class MyComponent : Component
{
// ...
[Editor(typeof(FilterEditor), typeof(UITypeEditor))]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public FilterCollection Filters { get; set; }
// ...
}
Run Code Online (Sandbox Code Playgroud)
问题是设计者没有正确地序列化集合.
我确定我错过了什么,但我不知道是什么.
我希望designer.cs文件具有以下内容:
myComponent.Filters.Add (new Filter ("some name", "some value"));
myComponent.Filters.Add (new Filter …Run Code Online (Sandbox Code Playgroud) c# ×7
.net ×3
protobuf-net ×2
arrays ×1
chaining ×1
collections ×1
constructor ×1
fakeiteasy ×1
generics ×1
inheritance ×1
mocking ×1
teamcity ×1
vb6 ×1
winforms ×1
wpf ×1
xml ×1