Gra*_*ton 11
您必须使用一些模拟框架,例如Typemock或Rhino Mocks或NMocks2.
NUnit也有一个Nunit.Mock,但它并不为人所熟知.
moq的语法可以在这里找到:
var mock = new Mock<ILoveThisFramework>();
// WOW! No record/reply weirdness?! :)
mock.Setup(framework => framework.DownloadExists("2.0.0.0"))
.Returns(true)
.AtMostOnce();
// Hand mock.Object as a collaborator and exercise it,
// like calling methods on it...
ILoveThisFramework lovable = mock.Object;
bool download = lovable.DownloadExists("2.0.0.0");
// Verify that the given method was indeed called with the expected value
mock.Verify(framework => framework.DownloadExists("2.0.0.0"));
Run Code Online (Sandbox Code Playgroud)
另外,请注意您只能模拟界面,因此如果您的对象System.IO.File没有界面,那么可能您无法做到.您必须将调用包装到System.IO.File您自己的自定义类中.
Dmy*_*iak 11
需要更多背景.所以我会在这里添加一个Moq:
pubilc class Calc {
public int DoubleIt(string a) {
return ToInt(a)*2;
}
public virtual int ToInt(string s) {
return int.Parse(s);
}
}
// The test:
var mock = new Mock<Calc>();
string parameterPassed = null;
mock.Setup(c => x.ToInt(It.Is.Any<int>())).Returns(3).Callback(s => parameterPassed = s);
mock.Object.DoubleIt("3");
Assert.AreEqual("3", parameterPassed);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20529 次 |
| 最近记录: |