实习生测试不在 dojo 中使用配置的注册表 requestProvider
intern test not using configured registry requestProvider in dojo
我正在关注 this article 在 dojo 中模拟响应。
我的模拟机与文章中的模拟机非常相似,不同之处在于:
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 Not Found。看起来测试中的 REST 调用没有尝试使用模拟服务。为什么?
您的想法通常是正确的,即使用 dojo/request/registry
注册 URL 应该通过您的处理程序通过 dojo/request
传递任何引用 URL 的内容。
不幸的是,dojo/store/JsonRest
使用 dojo/_base/xhr
模块,它直接使用 dojo/request/xhr
,而不是 dojo/request
。不幸的是,使用 dojo/request/registry
(以及 defaultProvider
的任何设置)创建的任何注册都将在 JsonRest 上丢失。
您可能想看看 dstore - 它的 Rest 存储实现与 dojo/store/JsonRest
相同的服务器请求,但它使用 dojo/request
而不是硬编码到特定的提供商。 (无论如何,dojo/request
在浏览器中默认为 dojo/request/xhr
,但可以通过 dojoConfig.requestProvider
覆盖。)dstore 包含用于在 dstore 的 API 和 dojo/store API,如果您需要将它与与后者一起操作的小部件一起使用。
我正在关注 this article 在 dojo 中模拟响应。
我的模拟机与文章中的模拟机非常相似,不同之处在于:
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 Not Found。看起来测试中的 REST 调用没有尝试使用模拟服务。为什么?
您的想法通常是正确的,即使用 dojo/request/registry
注册 URL 应该通过您的处理程序通过 dojo/request
传递任何引用 URL 的内容。
不幸的是,dojo/store/JsonRest
使用 dojo/_base/xhr
模块,它直接使用 dojo/request/xhr
,而不是 dojo/request
。不幸的是,使用 dojo/request/registry
(以及 defaultProvider
的任何设置)创建的任何注册都将在 JsonRest 上丢失。
您可能想看看 dstore - 它的 Rest 存储实现与 dojo/store/JsonRest
相同的服务器请求,但它使用 dojo/request
而不是硬编码到特定的提供商。 (无论如何,dojo/request
在浏览器中默认为 dojo/request/xhr
,但可以通过 dojoConfig.requestProvider
覆盖。)dstore 包含用于在 dstore 的 API 和 dojo/store API,如果您需要将它与与后者一起操作的小部件一起使用。