小编Dav*_*bec的帖子

如何在Angular中覆盖$ httpBackend的模拟响应?

可以在模拟的$ httpBackend中覆盖或重新定义模拟响应吗?

我有这样的测试:

beforeEach(inject(function ($rootScope, $controller, _$httpBackend_) {
  $httpBackend = _$httpBackend_;

  //Fake Backend
  $httpBackend.when('GET', '/myUrl').respond({}); //Empty data from server
  ...some more fake url responses...     
 }
Run Code Online (Sandbox Code Playgroud)

这对于大多数情况都很好,但是我很少有测试,我需要为同一个URL返回不同的东西.但似乎一旦定义了when().respond(),我就不能在这样的代码中改变它:

单个特定测试中的不同响应:

it('should work', inject(function($controller){
  $httpBackend.when('GET', '/myUrl').respond({'some':'very different value with long text'})

  //Create controller

  //Call the url

  //expect that {'some':'very different value with long text'} is returned
  //but instead I get the response defined in beforeEach
}));
Run Code Online (Sandbox Code Playgroud)

我怎么做?我的代码现在是不可测试的:(

unit-testing mocking angularjs

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

更改SINGLE文件时,Visual Studio 2015会编译所有打字稿文件

我使用Visual Studio 2015与Typescript 1.5.4和Resharper 9

这是一个错误的场景:

  • 我有大约180个打字稿文件
  • 我改变了单个.ts文件
  • VS显示消息"生成XXX.ts文件已完成.剩余文件仍在编译"
  • 之后,所有我的.ts文件都被编译为.js
  • 在.js文件中更改了2件事:格式略有不同,并删除了对.js.map的引用
  • 当我构建整个项目时,再次生成.js文件,但是具有原始格式并且存在指向.js.map的链接

这很烦人,因为它在Git中产生了太多的噪音,它阻止我直接在浏览器中调试typescript文件.(因为缺少.js.map文件)

当然,期望的行为是应该在保存时编译唯一更改的.ts文件.怎么做?

似乎R#与此无关,因为它会在R#禁用的情况下继续发生.

我目前的项目设置: 在此输入图像描述

------------- -------------更新

我试图更新到Typescript版本1.6.PATH变量指向C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.4\所以我已经更新指向1.6

所以,当我现在打字tsc -v时说message TS6029: Version 1.6.2

但由于历史原因(我工作的项目大约2年),我必须1.4在VisualStudio中使用版本.所以在.csproj中<TypeScriptToolsVersion>1.4</TypeScriptToolsVersion>

在此更改后,compile on safe完全停止工作.

现在我必须重建整个解决方案:(

javascript compilation visual-studio typescript

19
推荐指数
1
解决办法
4429
查看次数

内容安全策略 - data:image/svg+xml 在 img-src 中被忽略

我的 CSP 头看起来像这样(实际上,它只是与加载图像相关的部分),这应该是有效的。但是 Chrome 抱怨“内容安全策略指令‘img-src’的源列表包含一个无效的源:‘data:image/svg+xml’。它将被忽略。”

img-src data:image/svg+xml 'self' https://stats.g.doubleclick.net/r/collect https://www.facebook.com/tr/ https://www.google-analytics.com/r/collect data:image/svg+xml;
Run Code Online (Sandbox Code Playgroud)

它应该是有效的,我在网上的示例中找到了它,但它不起作用。例如,这里建议https://security.stackexchange.com/questions/94993/is-include-the-data-scheme-in-your-content-security-policy-safe/95011#95011

请提供有效且有效的示例,我迷失在这个迷宫中。

content-security-policy

9
推荐指数
1
解决办法
6629
查看次数

是否不支持NUnit异步安装?

我需要对以异步方式加载数据的方法进行单元测试.我可以轻松地运行异步测试方法

[Test]
public async Task My_test_async() {
 // ... await something
}
Run Code Online (Sandbox Code Playgroud)

但我也希望该Setup方法是异步的.因为它在模拟的Db中准备了一些数据.这个模拟的db当然也是异步的(它必须实现相同的接口).

所以我的设置方法如下所示:

[Setup]
public async Task Setup() {
  var db = new InMemoryDbContext();
  // ... add sample data in db context
  // ... then save them
  await db.SaveChangesAsync();
}
Run Code Online (Sandbox Code Playgroud)

但这导致我的测试被NUnit Runner跳过 在此输入图像描述

我正在使用NUnit版本3.0.1,NUnitTestAdapter.WithFramework版本2.0.0和VisualStudio 2015与Resharper 9.2

可能的解决方法

我可以解决这个问题,但两种解决方案都不是很好.

解决方法#1

重构Setup()方法是私有的,从中删除[Setup]属性,并在每个测试方法中调用它.这样就可以等待,测试就会执行.

解决方法#2

或者我可以使安装程序同步,并将异步代码包装在内Task.Run().Result,就像这样

var r = Task.Run(() => db.SaveChangesAsync()).Result;
Run Code Online (Sandbox Code Playgroud)

但这两种解决方法都很难看.

有谁知道更好的解决方案?

c# nunit unit-testing asynchronous visual-studio

7
推荐指数
2
解决办法
3471
查看次数

EmberJS:从组件js中访问组件html

有没有办法从组件JS文件中访问组件初始化的内部内容.我基本上想要获得收益.

例如,假设我有一个使用此模板的hbs:

{{#my-component}}
  <span>bla bla {{foo}}</span>
{{/my-component}}
Run Code Online (Sandbox Code Playgroud)

然后我想在我的组件中访问上面的跨度,如下面的示例所示,在theInnerHtml中,我想获得初始化组件中的内容.

import Ember from 'ember';

export default Ember.Component.extend({

  didInsertElement() {
    let theInnerHtml = this.get('innerHTML'); // "<span>bla bla {{foo}}</span>"
  }
});
Run Code Online (Sandbox Code Playgroud)

ember.js

7
推荐指数
1
解决办法
1047
查看次数

Docker运行导致"上游未找到主机"错误

我有一个托管在Docker中的前端Web应用程序.后端已经存在,但它有"自定义IP"地址,所以我不得不更新我的本地/ etc/hosts文件来访问它.因此,从我的本地机器,我可以毫无问题地访问后端API.

但问题是Docker莫名其妙地无法解析这个"自定义IP",即使主机在容器中写入(image?)/ etc/hosts文件.

当Docker容器启动时,我看到了这个错误

$ docker run media-saturn:dev
2016/05/11 07:26:46 [emerg] 1#1: host not found in upstream "my-server-address.com" in /etc/nginx/sites/ms.dev.my-company.com:36
nginx: [emerg] host not found in upstream "my-server-address.com" in /etc/nginx/sites/ms.dev.my-company.com:36
Run Code Online (Sandbox Code Playgroud)

我在Dockerfile中通过命令更新/ etc/hosts文件,就像这样

# install wget
RUN  apt-get update \
  && apt-get install -y wget \
  && rm -rf /var/lib/apt/lists/*

# The trick is to add the hostname on the same line as you use it, otherwise the hosts file will get reset, since every RUN command starts a new …
Run Code Online (Sandbox Code Playgroud)

nginx docker dockerfile

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

测试 无法在resetFakeAsyncZone读取未定义的属性'assertPresent'

我对业力v1.4有问题。测试框架。我所有的单元测试现在都因错误而失败Cannot read property 'assertPresent' of undefined at resetFakeAsyncZone

我已经在寻找解决方案并对其进行了测试,但不幸的是,没有任何帮助。解决方案建议我应该更改test.js文件中的导入顺序。我已经做到了。

这是我正在使用的建议顺序,但仍然失败:

import 'zone.js/dist/zone.js'; // 1st
import 'zone.js/dist/async-test'; // 2nd
import 'zone.js/dist/fake-async-test'; // 3rd
import 'zone.js/dist/long-stack-trace-zone'; // 4th
import 'zone.js/dist/sync-test'; // 5th
import 'zone.js/dist/proxy.js'; // 6th
import 'zone.js/dist/jasmine-patch'; // 7th
Run Code Online (Sandbox Code Playgroud)

PS:我使用的是VS Code,它现在在保存文件时自动对导入进行排序,从而更改了我的自定义导入顺序,在这种情况下,这非常烦人。我不知道如何仅针对特定文件禁用它,因此我必须在记事本中编辑test.js文件。

testing karma-runner zone.js angular

4
推荐指数
2
解决办法
2643
查看次数

如何使 Angular 11 i18n 在 NRWL NX Workspace.json 中工作?

Angular 11 内置了对i18n的支持。angular.json当在配置文件中配置时,这非常有效。我正在开发一个大型项目,其中单个 monorepo 中有多个子项目。我们使用 Nrwl NXworkspace.json来配置项目。问题是workspace.jsoni18n 有不同的语法,并且它似乎与angular.json. 另外,NX 文档关于 i18n 的内容非常简短(几乎不存在)。

结果是目前我的应用程序根本没有本地化。

有什么想法可以让 i18n 在 NRWL NX 中工作吗?

先感谢您。

internationalization angular nrwl nrwl-nx

3
推荐指数
1
解决办法
5274
查看次数

EmberJs在保存后不会更新记录

当我创建一个记录const myRecord = this.store.createRecord('myType', myObject),然后myRecord.save()请求通过适配器发送到服务器.数据已成功保存,服务器将所有数据返回给客户端.它通过序列化器返回,通过normalize()钩子.

问题是Ember不会myRecord使用从服务器返回的属性更新对象,例如idversion...

当我刷新页面时,所有属性都在那里(当然).

我有更新记录的类似问题.我的应用程序中的每条记录都有一个版本属性,由服务器检查.每次保存时都会增加版本.这是为了数据安全.问题是,当我尝试多次更新记录时,只有第一次尝试成功.原因是version请求从服务器返回后未更新.(是的,服务器返回更新版本)

这对我来说是一个令人惊讶的行为,在我看来,这似乎是这里建议的预期功能 - https://github.com/ebryn/ember-model/issues/265.(但该帖子是从2013年开始的,建议的解决方案对我不起作用).

有任何想法吗?

对于completenes,这是相关代码(简化和重命名)

基于myModel

export default Ember.Model.extend({
    typedId: attr('string') // this serves as an ID
    version: attr('string'), 
    name: attr('string'),
    markup: attr('number'), 
});
Run Code Online (Sandbox Code Playgroud)

myAdapter

RESTAdapter.extend({
    createRecord(store, type, snapshot) {
        // call to serializer
        const serializedData = this.serialize(snapshot, options);

        const url = 'http://some_internal_api_url';
        // this returns a promise
        const result =  this.ajax(url, 'POST', serializedData);

        return result;
    }, …
Run Code Online (Sandbox Code Playgroud)

ember.js ember-data

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