说我有这样一个类:
public class Character {
public Character(String name){
this.name = name;
}
private String name;
public String getName() { return name; }
}
Run Code Online (Sandbox Code Playgroud)
后来,一张地图
Map<Character, Integer> characterAges = new HashMap<Character, Integer>();
characterAges.put(new Character("Frodo"), 34);
Run Code Online (Sandbox Code Playgroud)
使用assertj,测试该字符的最佳方法是什么包括"佛罗多"字符?对于这个年龄,我可以这样做:
assertThat(characterAges).hasValue(34);
Run Code Online (Sandbox Code Playgroud)
我知道我能做到:
assertThat(characterAges.keySet())
.extracting("name")
.contains("Frodo");
Run Code Online (Sandbox Code Playgroud)
但后来我失去了流利.我真正想要的是这样的:
assertThat(characterAges)
.hasKey(key.extracting("name").contains("Frodo")
.hasValue(34);
Run Code Online (Sandbox Code Playgroud)
或者甚至更好,以便我可以确保我的密钥和值匹配:
assertThat(characterAges)
.hasEntry(key.extracting("name").contains("Frodo"), 34);
Run Code Online (Sandbox Code Playgroud)
这样的事情可能吗?
我正在测试的应用程序充满了基于自定义委托的事件,例如:
public delegate void NameChangedHandler(string name);
public event NameChanged OnNameChanged;
...
public void ChangeYourName(string newName)
{
if( NameChanged != null )
NameChanged(newName);
}
Run Code Online (Sandbox Code Playgroud)
我想模拟生成这些事件的类,并将这些事件提升到被测试的类中.
我知道,FakeItEasy可以使用Raise.With()的筹款活动与传统的事件签名 MyHandler(object sender, EventArgs e)或MyHandler(EventArgs e),但我不知道在我的情况做.
有任何想法吗?