小编Daw*_*son的帖子

E2E模拟$ httpBackend实际上并没有为我传递

虽然我相信我按照这里说明设置$ httpBackend将选定的请求传递给服务器,但它对我不起作用.

这是一个带有失败测试的Plunkr,它显示了我正在做的事情并在评论中解释了什么似乎出了问题.

我的洞察力表明,由于某种原因,模拟$httpBackend没有真实的内部副本,$httpBackend因此,当需要通过XHR请求时,它会将其传递给模拟$httpBackend.第二个调用抛出异常,因为它不知道如何处理请求.

对dtabuenc的回应

我很遗憾地记得你在中途测试的帖子.您确定了一系列重要的集成测试,它们介于单元测试和E2E测试之间.我站在那个中间地带.

我觉得你根本不是很讽刺.你的答案是完全合理的......或者如果不与" API reference/ngMockE2E/$ httpBackend " 的文本相矛盾,那将是合理的.我引用:

此实现可用于经由所述静态或动态响应响应whenAPI及其快捷方式(whenGET,whenPOST等)和任选地通过请求传递到实际$httpBackend用于特定请求(例如与某些远程的API交互或者从网络服务器获取模板) ...

[I] n端到端测试场景或在使用模拟替换真实后端api开发应用程序的情况下,通常需要某些类别的请求绕过模拟并发出真实的http请求 ....要使用此行为配置后端,请使用passThroughwhen 的请求处理程序而不是respond.[强调我的].

该文档没有提及$httpBackendJasmine环境中的E2E 使用问题.我想不出有理由排除它.如果有这样的理由,他们应该清楚说明.说真的,谁读了一个模拟组件,并没有预料到在测试环境中使用它?

" 将请求传递给真实$httpBackend的特定请求,例如与某些远程api进行交互 "正是我打算做的.除了该组件的非模拟版本之外,"真正的$ httpBackend"可能意味着什么呢?

我不明白你的说法

ngMocksE2E模块设计用于执行实际角度应用程序的"服务器"端.

"服务器"这个词在该页面上出现了3次,而不是曾经暗示任何应用程序代码都会在"服务器"上执行.我不知道你在"服务器"方面执行的"实际角度应用"是什么意思.

文档非常明确,E2E $httpBackend不仅限于E2E测试.它也适用于" 正在开发应用程序并将真实后端api替换为模拟 "的情况.

这距离我使用真正的后端api 测试应用程序的情况只有半步之遥."

在我的场景中,SUT正在调用从服务器获取数据的组件.我的测试用于验证此依赖组件是否成功完成了对真实后端的此类请求,并将以预期方式检索或保存数据.这是一种集成测试,通过模拟后端的行为无法充分满足.

当然,我可以使用模拟XHR响应来测试(并进行测试)组件能够正确响应我预测的后端行为.这与验证组件对 …

jasmine angularjs

23
推荐指数
2
解决办法
9749
查看次数

用于强制执行数组内容的JSON模式

大家好,提前谢谢.

我试图创建一个JSON模式来强制数组包含一个A和B对象和NC对象,其中A和B是C对象,N是包含在0和无穷大之间的整数.

因此:

[A, B] [A, B, C1] [A, B, C1, .., CN]

但是都是有效的:

[A] [A, C1] [A, C1, .., CN]

无效的.

为清楚起见,A和B必须存在.C对象是可选的,但您可以拥有任意数量的对象.

C对象模式:


{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "title": "C Object",

  "type": "object",
  "required": ["id", "name"],

  "properties": {
    "id": {
      "type": "integer"
    },
    "name": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
Run Code Online (Sandbox Code Playgroud)

所以C对象是任何有效的JSON对象,只包含属性"id"和"name",其中"id"是一个整数,"name"是一个字符串.

A和B对象模式:


{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "title": "A Object",

  "type": "object",
  "required": ["id", "name"],

  "properties": {
    "id": {
      "type": "integer"
    },
    "name": {
      "type": "string",
      "enum": …
Run Code Online (Sandbox Code Playgroud)

arrays validation schema json jsonschema

15
推荐指数
1
解决办法
7981
查看次数

无法从 Google App Engine 将事件发布到 Google Analytics

我正在尝试使用 Google App Engine (Java) 网络应用程序中的测量协议将事件发布到 google 分析。

我已经通过直接提交 URL 测试了 URL,它会立即(实时)显示在 Google Analytics 中。但是当我尝试在应用程序中发布它时,什么也没有显示。

所以我假设从我的 Java 代码开始有缺陷(也许是),所以我用谷歌的示例代码替换了我的代码,以便从谷歌应用引擎集成到谷歌分析这里。我改变了一点,但这里是关键位......

private static final URL GA_URL_ENDPOINT = getGoogleAnalyticsEndpoint();

private static URL getGoogleAnalyticsEndpoint() {
    try {
        return new URL("http", "www.google-analytics.com", "/collect");
    } catch (MalformedURLException e) {
        throw new RuntimeException(e);
    }
}

public boolean trackEvent(
        String category, String action, String label, String value) {

    try {

    Map<String, String> map = new LinkedHashMap<>();
    map.put("v", "1");             // Version.
    map.put("tid", gaTrackingId);
    map.put("cid", "555");
    map.put("t", "event");         // …
Run Code Online (Sandbox Code Playgroud)

google-app-engine google-analytics measurement-protocol

5
推荐指数
1
解决办法
576
查看次数

如何严格输入恒等函数作为特定变换?

如何定义一个transform<I, O>接受类型 I 的输入并返回类型 O 的输出的函数类型,然后将函数定义identity为 a 的特定实现transform

例如

type transform<I, O> = (input: I) => O;

const identity = // ...
Run Code Online (Sandbox Code Playgroud)

这样我就可以定义一个函数

const mapToObject = <K, V, O>(
  map: Map<K, V>, 
  transformValue: transform<V, O> = identity
) => Array.from(map.entries()).reduce((obj, [key, val]) => {
  obj[key] = transformValue(value);
  return obj;
}, {});
Run Code Online (Sandbox Code Playgroud)

mapToObject函数应该采用MapandtransformValue函数并将映射转换为简单的 JS 对象,应用于transformValue映射中的每个值。transformValue应默认为identity函数v => v.

尽管我对严格类型的解决方案感兴趣,但恒等函数映射any是有效的。any

generics transformation typescript

4
推荐指数
1
解决办法
4059
查看次数

如何保存和打包Brew软件包?

我习惯于通过npm,pip和gem之类的工具来安装软件包和库。这些工具允许我以某种形式(package.json,Requirements.txt或Gemfile)跟踪已安装的软件包。然后可以将其检入存储库并进行版本控制。

我在Github上有一个dotfiles存储库,我想将其用作版本控制我的机器配置的方式,我想知道是否有一种方法可以对安装的brew软件包进行版本控制?如果是这样,怎么做?我想要的brew install --save是某种东西。:)

macos homebrew

2
推荐指数
1
解决办法
1214
查看次数