我正在编写一组向导来增强IDE中的源代码编辑,文本操作是通过我从IOTAEditPosition
获得的BorlandIDEServices
完成的。
如何根据我的方法自动化测试,以便我可以断言文本操作是否正确完成? IOTAEditPosition
不能被存根或模拟,因为我想模拟生产代码的相同环境(真正的IOTAEditPosition
做一些自动工作的缩进,换行,它有几个方法,比如检查看看如果一个字符是一个标识符或一个单词分隔符,文本搜索机制等,它确实做了很多特定于IDE编辑器的事情。)
在这种情况下,我不关心单元与集成测试之类的清教主义。如果你愿意,可以称之为集成测试,事实是我的代码完全取决于IOTAEditPosition
的行为是非常明智的,我需要一起测试它们。
只是为了让它更清晰一些。在我看来,理想的断言就像是:
// DUnit test case
MyObject.LoadText(SampleText);
MyObject.ManipulateText;
CheckEquals(ExpectedManipulatedText, MyObject.GetManipulatedText);
由于实际的底层文本操作是由IOTAEditPosition完成的,我需要它的实现,其行为与我在生产代码中完全相同。