小编Wor*_*red的帖子

单元测试AngularJS指令与templateUrl

我有一个templateUrl定义的AngularJS指令.我正在尝试用Jasmine进行单元测试.

根据以下建议,我的Jasmine JavaScript如下所示:

describe('module: my.module', function () {
    beforeEach(module('my.module'));

    describe('my-directive directive', function () {
        var scope, $compile;
        beforeEach(inject(function (_$rootScope_, _$compile_, $injector) {
            scope = _$rootScope_;
            $compile = _$compile_;
            $httpBackend = $injector.get('$httpBackend');
            $httpBackend.whenGET('path/to/template.html').passThrough();
        }));

        describe('test', function () {
            var element;
            beforeEach(function () {
                element = $compile(
                    '<my-directive></my-directive>')(scope);
                angular.element(document.body).append(element);
            });

            afterEach(function () {
                element.remove();
            });

            it('test', function () {
                expect(element.html()).toBe('asdf');
            });

        });
    });
});
Run Code Online (Sandbox Code Playgroud)

当我在我的Jasmine规范错误中运行它时,我收到以下错误:

TypeError: Object #<Object> has no method 'passThrough'
Run Code Online (Sandbox Code Playgroud)

我想要的是模板加载原型 - 我不想使用respond.我相信这可能与使用ngMock …

jasmine angularjs angularjs-directive

121
推荐指数
7
解决办法
7万
查看次数

单元测试Angular Service使用$ timeout与Jasmine的模拟时钟

我在我的一个角度服务中有一个函数,我希望定期重复调用它.我想用$ timeout来做这件事.它看起来像这样:

var interval = 1000; // Or something

var _tick = function () {
     $timeout(function () {
        doStuff();
        _tick();
    }, interval);
};

_tick();
Run Code Online (Sandbox Code Playgroud)

我对如何用Jasmine进行单元测试感到困惑 - 我该怎么做?如果我使用$timeout.flush()那么函数调用无限期地发生.如果我使用Jasmine的模拟时钟,$timeout似乎不受影响.基本上如果我能让这个工作,我应该好好去:

describe("ANGULAR Manually ticking the Jasmine Mock Clock", function() {
    var timerCallback, $timeout;

    beforeEach(inject(function($injector) {
        $timeout = $injector.get('$timeout');
        timerCallback = jasmine.createSpy('timerCallback');
        jasmine.Clock.useMock();
    }));

    it("causes a timeout to be called synchronously", function() {
        $timeout(function() {
            timerCallback();
        }, 100);
        expect(timerCallback).not.toHaveBeenCalled();
        jasmine.Clock.tick(101);
        expect(timerCallback).toHaveBeenCalled();
    });
});
Run Code Online (Sandbox Code Playgroud)

这两个版本有用,但不能帮助我:

describe("Manually ticking the Jasmine Mock Clock", function() …
Run Code Online (Sandbox Code Playgroud)

javascript jasmine angularjs

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

等待xUnit.net中的测试设置代码中的任务?

确切的情况是我正在使用Protractor.NET(AngularJS的Protractor E2E框架的.NET端口)进行E2E测试,我想做一些Web请求(以及API System.Net.Http.HttpClient- 有所有异步/ Task方法)来安排我的在Act/Assert之前进行测试,只有我需要做同样的安排进行多次测试.

我正在使用xUnit.net作为我的测试运行器,他们使用一个接口(IUseFixture<T>)来获得每个夹具的设置代码.如果有IAsyncUseFixture<T>一个Task SetFixtureAsync(T t);或那个东西会很好.我不认为这样的事情存在.另外,我不认为构造函数可以使用它们await,构造函数是在xUnit.net中执行相同代码块的唯一方法.

我有什么选择? .Result?是不是那种不好的做法(死锁)?

c# xunit.net async-await

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

在C#中扩展DataTable

类的静态构造函数SourceManager遍历所有模块/类,并发现实现的所有类ISource.它将实例化其中的每一个并将IEnumerable它们作为静态属性公开IEnumerable<ISource> Sources.为简单起见,ISource有两个属性,DataTable Table { get; }string UniqueName { get; }.当实例化时,每个不同ISource的人负责Table从SQL,MDX等填充它.对于ISource我迄今为止所写的Table所有内容,DataRow在实例化时加载所有s已足够.但是我现在有一个情况,我想加载TableDataRow的懒惰,而不是所有的前面.我该怎么做呢? 我将通过一个例子来说明.

PermissionSource实施ISource.它的Table属性,有private set一个值为new PermissionDataTable().它UniqueName"Permissions".截至目前,没有权限从数据库加载到此Table属性.

ISource permissionSource = SourceManager.Sources.
    Where(s => "Permission".Equals(s.UniqueName)).First();
Run Code Online (Sandbox Code Playgroud)

现在我们已经获得了PermissionSource,但是通过一个界面.我们得到一个许可.

DataRow row = permissionSource.Table.Rows.Cast<DataRow>().
    Where(r => r["PermissionName"].Equals("PermissionName")).First()
Run Code Online (Sandbox Code Playgroud)

我已经覆盖了Rows属性,PermissionDataTable以便上面以某种方式获取与 …

c# datatable

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

有没有办法从Angular中的缓存中获取所有密钥,特别是模板缓存?

有没有办法从Angular中的缓存中获取所有密钥,特别是模板缓存?

我没有在$ cacheFactory$ templateCache的文档中看到有关如何执行此操作的任何内容.(或来自Google或SO ....)

javascript angularjs

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

有没有办法在剃刀(MVC3)视图中做一个`extern alias`?

有没有办法做extern alias一个剃刀(MVC3)视图?

我有两个版本的相同程序集(即1.0和2.0),其类型具有相同的名称和命名空间,我需要一种方法来在剃刀视图中指定较新的版本.

我试过了:

@extern
Run Code Online (Sandbox Code Playgroud)

和:

@{ extern alias MyAlias; }
Run Code Online (Sandbox Code Playgroud)

但这些都没有奏效.

c# alias extern razor

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

在Python 3.2中,"lambda"被认为是"关键字","运营商"还是两者兼而有之?

在Python 3.2中,根据这个:http://docs.python.org/py3k/reference/expressions.html#summary

lambda 是Python中具有最低优先级的运算符.

根据这个:http://docs.python.org/py3k/reference/lexical_analysis.html#keywords

lambda 是一个Python语言关键字.

但是,根据这个:http://docs.python.org/py3k/reference/lexical_analysis.html#other-tokens

运算符和关键字是不同的实体.

我正在尝试系统地向某人解释Python 3.2,我不想混淆他们.我,我自己,对运营商和关键字的确切定义感到困惑.

我最好的猜测是术语"运算符"在Python解析器和Python词法分析器的上下文中使用时意味着略有不同.

python lambda language-lawyer

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

为什么我的应用程序在尝试关闭SqlConnection对象时挂起?

我试图从SQL Server上的SQL表中获取C#中的列信息.我正在关注此链接中的示例:http://support.microsoft.com/kb/310107我的程序在尝试关闭连接时奇怪地挂起.如果未关闭连接,程序将退出而不会出现任何异常.这是我的代码:

SqlConnection connection = new SqlConnection(@"MyConnectionString"); 
connection.Open();
SqlCommand command = new SqlCommand("SELECT * FROM MyTable", connection);
SqlDataReader reader = command.ExecuteReader(CommandBehavior.KeyInfo); // If this is changed to CommandBehavior.SchemaOnly, the program runs fast.
DataTable table = reader.GetSchemaTable();
Console.WriteLine(table.Rows.Count);
connection.Close(); // Alternatively If this line is commented out, the program runs fast.
Run Code Online (Sandbox Code Playgroud)

SqlConnection内部放入使用块也会导致应用程序挂起,除非CommandBehavior.KeyInfo更改为CommandBehavior.SchemaOnly.

using (SqlConnection connection = new SqlConnection(@"MyConnectionString"))
{
    connection.Open();
    SqlCommand command = new SqlCommand("SELECT * FROM MyTable", connection);
    SqlDataReader reader …
Run Code Online (Sandbox Code Playgroud)

c# sql sql-server ado.net

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

为什么我会收到此错误?UnknownEndpoint:无法访问主机:“devicefarm.us-east-1.amazonaws.com”

我正在尝试列出 AWS Device Farm 中的项目。

这是我的代码:

const AWS = require('aws-sdk');

AWS.config.update({ region:'us-east-1' });
const credentials = new AWS.SharedIniFileCredentials({ profile: '***' });
AWS.config.credentials = credentials;
    
const devicefarm = new AWS.DeviceFarm();
    
async function run() {
  let projects = await devicefarm.listProjects().promise();
  console.log(projects);
}
    
run();
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

UnknownEndpoint:无法访问的主机:devicefarm.us-east-1.amazonaws.com'. 此服务可能在“us-east-1”区域不可用。

amazon-web-services aws-device-farm

6
推荐指数
2
解决办法
3万
查看次数

"JavaScript:好的部分" - 为什么删除可以在本书暗示它不应该用作属性名称

以下是第2章名称的摘录:

一个名称 不能是这些保留字之一:

... delete...

然后在该部分中:

名称用于...属性名称...

如果这是真的,那么为什么这在我的浏览器控制台中有效:

> a = {};
> a.delete = 1;
> a.delete + 2 === 3
true
Run Code Online (Sandbox Code Playgroud)

我正在使用谷歌浏览器的"版本36.0.1985.143米"浏览器和我的操作系统的Windows 8.1企业版.

作者是否意味着属性名称应该是保留字或我错过了什么?

javascript

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