1

我正在尝试在我正在处理的 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) 运行时工作。当代码在浏览器插件中运行时,它会失败。检查库项目中的调试器还显示数据属性未嵌套在 [Inherited] 内,而是与其他属性处于同一级别。

更新:
我在使用 URLLoader 时遇到了同样的问题,但这次正好相反。只有在浏览器插件中运行测试时,才能模拟 URLLoader。
由于我正在创建一个类来处理本地和远程文件加载,使用 FileReference 或 URLLoader,取决于输入,我有效地阻止了对这个类进行完全的单元测试。:(

4

0 回答 0