比较两个任意动态对象是否相同的最佳方法是什么?例如这两个对象.
即
dynamic obj1 = new ExpandoObject();
obj1.Name = "Marcus";
obj1.Age = 39;
obj1.LengthInMeters = 1.96;
dynamic obj2 = AMethodReturningADynamic();
obj2.Name = "Marcus";
obj2.Age = 39;
obj2.LengthInMeters = 1.96;
Assert.AreEqual(obj1, obj2); // ?
Run Code Online (Sandbox Code Playgroud)
或者有没有办法将实际属性及其值作为列表?例如,从动态类型创建ExpandoObject?
我有一个非常简单的Koa应用程序:
var app = module.exports = require("koa")();
app.use(function *(){
this.body = "Koa says Hi!";
});
var port = process.env.PORT || (process.argv[2] || 3000);
port = (typeof port === "number") ? port : 3000;
app.listen(port);
console.log("Application started. Listening on port:" + port);
Run Code Online (Sandbox Code Playgroud)
我用这样的mocha和supertest测试;
var app = require("../");
var request = require("supertest").agent(app.listen());
describe("Our amazing site", function () {
it("has a nice welcoming message", function (done) {
request
.get("/")
.expect("Koa says Hi!")
.end(done);
});
});
Run Code Online (Sandbox Code Playgroud)
我想看看我的文件的变化,并使用这样的-w标志
mocha -u bdd -R min …Run Code Online (Sandbox Code Playgroud) 好的 - 我喜欢NancyFx.使用这几行编写Web应用程序真是太棒了!
但是,如何在单元级别上测试驱动NancyModules?
请注意,我知道Nancy提供的出色的测试框架(Nancy.Testing on NuGet),它提供了测试整个(几乎)应用程序堆栈的出色方法.但现在我指的是我用来以TDD方式充实我的NancyModule内容的单元级别测试.
由于路由是在构造函数中定义的,通常与构成整个动作的lamda表达式一起,因此单元测试感觉有点"无法访问".但是,我是否错过了关于如何测试路线行为的明显错误?
例如,如何对这个简单的应用程序进行单元测试?
public class ResouceModule : NancyModule
{
private IProductRepository _productRepo;
public ResourceModule(IProductRepository repo) : base("/products")
{
Get["/list"] = parameters => {
return View["productList.cshtml", repo.GetAllProducts()];
};
}
}
Run Code Online (Sandbox Code Playgroud)
看到那里 - 现在我在测试之前编写了生产代码...... :)关于如何开始测试的任何建议?