我正在尝试在我正在处理的flex项目中模拟FileReference。
找出一些属性,例如名称和大小可以正常工作,但数据只是拒绝工作。 以下是解释问题的代码:
[Test]
public function FileReferenceMockTest():void {
var frMock:FileReference = nice(FileReference);
var bytes:ByteArray = new ByteArray();
stub(frMock).getter("data").returns(bytes);
stub(frMock).getter("name").returns("filename");
assertThat(frMock.name, equalTo("filename")); // works
assertThat(frMock.data, sameInstance(bytes)); // Fails and says that frMock.data is null
}
如果我在调试器中设置断点并检查frMock,它看起来像这样:
frMock
[inherited]
data = null
creationDate = null
creator = null
modificationDate = null
name = "filename"
__proxy__ = InterceptorProxyListener
...
如您所见,模拟对数据的处理方式不同。
我几个小时以来一直在努力解决这个问题,并且真的可以帮助解决这个问题。
更新:
代码在作为Flex库项目或Flex项目(Air)运行时有效。当代码在浏览器插件中运行时失败了。
检查库项目中的调试器还会显示data属性不嵌套在[Inherited]中,但与其他属性在同一级别。
更新:
我遇到了与URLLoader相同的问题,但这次反过来了。只有在浏览器插件中运行测试时,才能模拟URLLoader
由于我正在创建一个类来处理本地和远程文件加载,使用FileReference或URLLoader,根据输入,我有效地防止完全单元测试这个类。 :(