使用mockolate模拟FileReference.data?

时间:2012-12-12 22:43:10

标签: actionscript-3 flex unit-testing flexunit mockolate

我正在尝试在我正在处理的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,根据输入,我有效地防止完全单元测试这个类。 :(

0 个答案:

没有答案