I'm Japanese.Excuse me用丑陋的英语。
我想创建hash mock。
所以,我尝试了这个代码,
但是发生了错误
To allow expectations on `nil` and suppress this message, set `RSpec::Mocks.configuration.allow_message_expectations_on_nil` to `true`. To disallow expectations on `nil`, set `RSpec::Mocks.configuration.allow_message_expectations_
我想知道这个特性是否存在于RSpec中。在调查时,我似乎找不到任何结果。
我想做的是可以在Jest测试中完成的事情,如下所示:
// This is a Jest expectation
expect(foo).toMatchInlineSnapshot()
// On the first execution of this code, the value of foo will fill in the expectation and result in something like this
expect(foo).toMatchInlineSnapshot('bar'
我使用脚手架来生成rspec控制器测试。默认情况下,它将测试创建为:
let(:valid_attributes) {
skip("Add a hash of attributes valid for your model")
}
describe "PUT update" do
describe "with valid params" do
let(:new_attributes) {
skip("Add a hash of attributes valid for your m
我正在尝试通过使用共享上下文来干燥我的RSpec请求规范。我想在共享上下文之间共享let变量,这样它们就可以相互继承和扩展。
Rspec.shared_context 'JSON request' do
let(:headers) do
{
'Accept' => 'application/json'
}
end
end
Rspec.shared_context 'Authenticated request' do
let(:headers) do
super().merge
假设我用一个参数创建了一个Rspec共享示例组(测试的业务目的是无关的,它是我当前代码库的一个过于简化的版本):
shared_examples "some example group" do |parameter|
it "does something" do
puts "parameter=#{parameter}"
print_the_parameter
end
def print_the_parameter
puts "parameter=#{parameter}"
end
en
在关于JavaScript对象的(Udacity)课程的一部分中,它指出,由于原语是不可变的,对函数中的参数所做的任何更改都会有效地创建该函数的本地副本,而不会影响函数外部的原语。这就是提供的例子:
function changeToEight(n) {
n = 8; // whatever n was, it is now 8... but only in this function!
}
let n = 7;
changeToEight(n);
console.log(n); // 7
但是,如下面的示例所示,您可以在函数中更改分配给全局变量的值(只要变量名不作为参数传递):
l
我正在尝试使用RSpec的Macros来干燥我的规范,但我遇到了一个问题。
describe "..." do
let!(:blog) { create(:blog) }
post "/blogs/#{blog.id}/posts" do
# some macros
end
end
我想要访问blog变量,但我不想在it { ... }块中这样做,这样无论资源是什么,我都可以使用我的宏(例如,我想将其应用于blogs、posts、comments等)。
有可能吗?
我想把rspec测试写到现有代码上。现有的代码是 def getperson
log_middle('getperson') do
@filteredPersons = Person.where(['UserID=?', @@userID])
end
@filteredPersons
end 我想从rspec文件中赋值为@@userID。如何在person_spec文件中为其赋值
这是我的代码:
#app/models/user.rb
class User < ActiveRecord::Base
def display_name
name.split(' ').try(:first)
end
end
#spec/models/user_spec.rb
require 'rails_helper'
RSpec.describe User, :type => :model do
let(:user) { FactoryGirl.create :user }
it "should retur
我想在我的规范之间共享一个已记忆的方法。所以我尝试使用共享上下文,如下所示
RSpec.configure do |spec|
spec.shared_context :specs do
let(:response) { request.execute! }
end
end
describe 'something' do
include_context :specs
end
它工作正常。但是我有大约60个规范文件,所以我不得不在每个文件中显式地包含上下文。有没有办法在spec_helper.rb中自动包含所有示例组的共享上下文(或者至少是let定义
像这样
在Rspec中,我想利用super()来调用已定义的let块(如果它存在的话),或者设置一个新的值(如果没有),我想在shared_example组中使用它,但是我无法找到如何做到这一点。
我试过检查@some_let是否存在,我尝试过检查:some_let的超级方法是否属于kernel,而且它们都没有提供任何有用的东西;我无法访问instance_methods或instance_method,因为Rspec不允许我,并且在互联网上搜索一个方法还没有找到答案。
我想做这样的事:
shared_examples 'a shared example' do
let(:some