实习生测试未使用dojo中配置的注册表requestProvider

实习生测试未使用dojo中配置的注册表requestProvider,dojo,intern,Dojo,Intern,我下面是dojo中的模拟响应 我的mocker与文章中的mocker非常相似,只是: registry.register(/\/testIntern/, function (url, options) { return when({ value: "Hello World" }); 据我所知,这应该映射到地址上包含“/testIntern”的任何请求 我的测试用例非常简单: // similar to example var test

我下面是dojo中的模拟响应

我的mocker与文章中的mocker非常相似,只是:

registry.register(/\/testIntern/, function (url, options) {
  return when({
                value: "Hello World"
            });
据我所知,这应该映射到地址上包含“/testIntern”的任何请求

我的测试用例非常简单:

// similar to example
var testRest= new Rest("/testIntern", true);
            testRest("").then(lang.hitch(this, function (data) {
                assert.deepEqual("Hello World", data.value, "Expected 'Hello World', but got" + data.value);
            }));

其实应该很简单。但是当我运行这个测试时,我发现404没有找到。测试中的REST调用似乎没有尝试使用模拟服务。为什么?

您的想法通常是正确的,在
dojo/request/registry
中注册URL应该通过
dojo/request
将引用该URL的任何内容传递给处理程序

不幸的是,
dojo/store/JsonRest
使用的是
dojo/\u base/xhr
模块,它直接使用
dojo/request/xhr
,而不是
dojo/request
。使用
dojo/request/registry
(以及
defaultProvider
的任何设置)创建的任何注册都将在JsonRest上丢失


您可能想了解一下-它的Rest存储实现了与
dojo/store/JsonRest
相同的服务器请求,但它使用
dojo/request
,而不是硬编码到特定的提供者。(
dojo/request
在浏览器中默认为
dojo/request/xhr
,但可以通过
dojoConfig.requestProvider
覆盖)dstore包含用于在dstore的API和dojo/store API之间转换的适配器,如果您需要将它与操作后者的小部件一起使用。

您的registry.register调用的是哪个模块?您是否正确指定了
dojoConfig.requestProvider
,以便注册处理程序?您使用的是dojo/store还是dstore?@KenFranqueiro,该链接中的示例没有提到任何关于registry.register调用的内容。这有什么用?dojoConfig.requestProvider设置为“dojo/request/registry”。为什么我要使用store来进行这个简单的测试?这篇文章中的第一个示例包括一个
registry.register
调用。我询问您正在使用哪个存储实现,因为您显然正在实例化
Rest
,我假设它是
dstore/Rest
dojo/store/JsonRest
@KenFranqueiro,我正在使用dojo/store/JsonRest。我找不到该示例如何实现任何存储。在第一个示例中,registry.register调用似乎与特定的存储无关?对不起,我对dojo还不太熟悉。